我想将代理设置仅应用于 Mac OS X 中的特定主机(例如 www.apple.com)。我该怎么做?
在“系统偏好设置”中,只有通过传递特定主机的代理设置。
答案1
您可以使用以下proxy.pac
文件通过代理 1.2.3.4 将所有流量发送到 apple.com,同时仍直接发送到所有其他主机:
function FindProxyForURL(url, host) {
PROXY = "PROXY 1.2.3.4"
// Apple.com via proxy
if (shExpMatch(host,"*.apple.com")) {
return PROXY;
}
// Everything else directly!
return "DIRECT";
}
- 将此脚本另存为
proxy.pac
(或您喜欢的任何其他名称)在 Web 服务器上。这可以是本地 Web 服务器(http://localhost/proxy.pac)。 这是从 OSX Lion 开始需要。 - 前往
System Preferences
。 - 选择
Network
。 - 选择您想要更改的网络(即“WiFi”)。
- 点击
Advanced...
按钮。 - 单击
Proxies
选项卡 - 查看
[x] Automatic Proxy-Configuration
。 - 在
URL:
字段中,输入您在步骤 1 中创建的文件的 URL,例如:http://localhost/proxy.pac
。(注意:本地路径在现代 OSX 中不起作用) - 点击
Save
并Apply
瞧!你自己的代理配置
有关文件格式的更多信息,proxy.pac
请参阅http://en.wikipedia.org/wiki/Proxy_Auto-Config作为起点。
答案2
实际上,您可以使用file:///path/to/file
URL 方案,而不必依赖于 Web 服务器。
例如:
file:///Users/youruser/var/proxy/proxy.pac
答案3
添加到@heiglandreas 的答案......
@jnbek 的解决方案对我来说在 Mac OSX 上不起作用,所以我正在寻找一个简单的解决方案。
因此,我创建了一个新文件夹并将 pac 文件复制到其中。然后,我从该文件夹本身在 OSX 上的端口 80 上启动了一个简单的 Web 服务器。
只需进入文件夹并运行此命令。如果端口已被占用,请将其从 80 更改为其他端口。
python -m SimpleHTTPServer 80
现在,我可以轻松从中获取 proxy.pac 文件http://localhost/proxy.pac
。或者,对于不同的端口使用:http://localhost:PORT/proxy.pac
。
答案4
@Rehmat 的答案很棒,但是它没有针对 python 3 和 Mac OS X Big Sur 进行更新:
在名为 proxy-web 的新目录中创建一个 proxy.pac 文件(在您想要的任何父目录中):
function FindProxyForURL(url, host) { PROXY = "PROXY 1.2.3.4" // Apple.com via proxy if (shExpMatch(host,"*.apple.com")) { return PROXY; } // Everything else directly! return "DIRECT"; }
在 proxy.pac 文件所在的目录中启动 Web 服务器
cd proxy-web ls # proxy.pac python -m http.server 80
打开 Apple -> 系统偏好设置
点击“网络”
选择相关的特定网络(例如:“Thunderbolt Ethernet”或“Wi-Fi”)
单击“高级”
选择代理选项卡
勾选自动代理配置框,输入URL:http://localhost/proxy.pac
单击“确定”并“应用”,但不要关闭网络设置
通过在 CHROME 中进入苹果来测试它是否正常工作(不是 SAFARI - 对我来说,我们的公司 URL 和代理似乎无法在 Safari 中使用,但 Chrome 可以正常工作):apple.com
在 Safari 中测试。如果不行,请点击
Advanced → TCP/IP
网络设置选项卡下的“续订 DHCP 租约”通过访问非 Apple URI(例如:)在您最喜欢的浏览器中运行进一步的测试google.com)。如果您正在代理特定子域,那么您还需要测试其他不应代理的子域。