仅在Mac中将代理添加到特定主机


10

我想将代理设置仅应用于Mac OS X中的特定主机(例如,www.apple.com)。我该怎么做?

在“系统偏好设置”中,只有选项可以绕过特定主机的代理设置。

Answers:


17

您可以使用以下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";
}
  1. 将此脚本另存为proxy.pac(或您喜欢的任何其他名称)在Web服务器上。这可以是本地Web服务器(http://localhost/proxy.pac)。从OSX Lion开始,这是必需的
  2. 转到System Preferences
  3. 选择Network
  4. 选择您要更改的网络(即“ WiFi”)。
  5. 点击Advanced...按钮。
  6. 点击Proxies标签
  7. 检查[x] Automatic Proxy-Configuration
  8. URL:字段中,输入您在步骤1中创建的文件的URL,例如:http://localhost/proxy.pac。(注意:本地路径在现代OSX中不起作用)
  9. 点击SaveApply

瞧!您自己的代理配置

有关proxy.pac文件格式的更多信息,请参见http://en.wikipedia.org/wiki/Proxy_Auto-Config作为起点。


8

实际上,您可以将file:///path/to/file方案用于URL,而不必依赖Web服务器。

例如:

file:///Users/youruser/var/proxy/proxy.pac

1
有趣的是,这一切都适用于Linux / BSD,甚至适用于Windows。在使用“ 自动代理配置”的任何地方,都可能会起作用。
jnbek '16

这可能应该是公认的答案,因为它可以避免使使用中的堆栈变得过于复杂,并且如前面的评论所述,这是一种更为通用的解决方案。
user239546'3

如果使用file:///...pac,则在某些应用程序中可能会出现问题(例如Teams等Microsoft应用程序,请参阅support.microsoft.com/zh-cn/help/4042151/…),因此最好的方法是将其放在本地主机或Internet上的任何公共服务器上。
发青

1
这在OSX上不起作用。
jpgeek,

@jpgeek对我来说适用于10.15。如果不确定,请返回'PROXY ...'而不检查域以进行验证。proxy.pac切换wifi时会重新读取。
seeker_of_bacon

2

添加到@heiglandreas的答案...

@jnbek的解决方案对我来说不适用于Mac OSX,我正在寻找一个简单的解决方案。

因此,我创建了一个新文件夹并将pac文件复制到该文件夹​​中。然后,我从该文件夹本身在端口80上的OSX上启动了一个简单的Web服务器。

只需进入文件夹并运行此命令。如果端口已被占用,请将端口从80更改为其他端口。

python -m SimpleHTTPServer 80

现在,我可以很容易地从中获取proxy.pac文件http://localhost/proxy.pac。或者,对于不同的端口使用:http://localhost:PORT/proxy.pac

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.