OSX: 为什么 curl 不使用自动代理配置/PAC?

OSX: Why does curl not use Automatic Proxy Configuration / PAC?

我的工作场所有一个相当复杂的 PAC 文件,用于确定应使用哪个代理 HTTP(S) 流量访问各种内部和外部网络。这对于 Chrome、Safari 等来说很好,但对于命令行工具(curl、大多数脚本语言 HTTP 库)来说就很糟糕了。正常的解决方案是设置各种环境变量,如 HTTP_PROXYproxy.example.com:8888,但这不适用于 PAC。相反,我们大多数人 运行 在 localhost 上使用某种 PAC 感知代理并通过它发送所有内容。

我的问题是,为什么这些首先是必要的? OSX 可以很好地为自己的连接评估 PAC 规则,但 curl 等不能? networksetup 给我这个:

$ networksetup -listallhardwareports
Hardware Port: Wi-Fi
Device: en0
Ethernet Address: ...
$ networksetup -getproxyautodiscovery Wi-Fi
Auto Proxy Discovery: On

我认为这意味着任何通过 en0 的东西都应该有代理自动发现。那是错的吗?代理自动发现和自动配置是否发生在只能通过 Apple API(哪些浏览器等使用)访问的更高级别? (如果是这样,我该如何访问它们?)

OS X 10.11 及更高版本包括 nscurl,这是一个简化的类似 curl 的实用程序,它使用平台 API 进行网络传输。我希望它支持代理以及任何 OS X 应用程序,尽管它不具备完整 curl

的所有功能