我正在使用Charles来调试HTTP请求,但似乎Go的网络堆栈忽略了系统代理设置(在OSX上)并且未记录请求。
如何告诉Go请求应该使用代理?
答案 0 :(得分:3)
您可以使用ProxyFromEnvironment功能获取代理信息。然后使用transport(由RoundTripper接口表示)创建http客户端,其中包含有关代理设置的信息:
var PTransport http.RoundTripper = &http.Transport{Proxy: http.ProxyFromEnvironment}
client := http.Client{Transport: PTransport}
然后你只需要使用info传输获取http请求从传递函数到Proxy
struct字段。代理信息将来自$HTTP_PROXY
环境变量。
答案 1 :(得分:3)
我刚才遇到了这个问题,并且接受的解决方案并没有为我解决。那是因为我的$HTTP_PROXY
环境变量未设置!
我可以通过设置环境变量来解决问题,如下所示:http://www.bonusbits.com/wiki/HowTo:Setup_Charles_Proxy_on_Mac然后,一旦变量设置正确,我甚至不需要应用自定义Transport
给我的客户。它适用于默认传输。
也许是因为我使用的是自定义shell(zsh),这并没有自动发生。然而有趣的是,python会在同一个shell中出现在Charles Proxy中,而Go则不会。更新我的.zshrc(或您正在使用的任何shell或配置文件&config;)以导出适当的变量。