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

时间:2017-02-28 13:56:58

标签: macos curl proxy 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(浏览器等使用)访问吗? (如果是这样,我该如何访问它们?)

1 个答案:

答案 0 :(得分:2)

OS X 10.11及更高版本包含curl,这是一个简化的类似curl的实用程序,它使用平台API进行网络传输。我希望它支持代理以及任何OS X应用程序,尽管它没有完整class ViewController: UIViewController { @IBOutlet weak var testLabel: UILabel! var savedValue = UserDefaults.standard.bool(forKey: "sound") override func viewDidLoad() { super.viewDidLoad() NotificationCenter.default.addObserver(self, selector: #selector(ViewController.retrieveValue), name: Notification.Name("nSound"), object: nil) //For when the view appears the first time savedValue = UserDefaults.standard.bool(forKey: "sound") if (savedValue == true) { testLabel.text = "yes" } else { testLabel.text = "no" } } func retrieveValue() { //refresh the savedValue variable savedValue = UserDefaults.standard.bool(forKey: "sound") //test the savedValue variable if (savedValue == true) { testLabel.text = "yes" } else { testLabel.text = "no" } } 的所有功能