8

Charlesを使用してHTTP リクエストをデバッグしていますが、Go のネットワーク スタックが (OSX 上で) システム プロキシ設定を無視し、リクエストがログに記録されないようです。

リクエストでプロキシを使用する必要があることを Go に伝えるにはどうすればよいですか?

4

2 に答える 2

7

私はまさにこの問題を抱えていましたが、受け入れられた解決策では解決しませんでした。これは、$HTTP_PROXY環境変数が設定されていないためです。

ここに示されているように環境変数を設定することで解決できました: http://www.bonusbits.com/wiki/HowTo:Setup_Charles_Proxy_on_Macその後、変数が正しく設定されたら、カスタムを適用する必要さえありませんでしたTransport私のクライアントに。デフォルトのトランスポートで動作しました。

おそらく、カスタム シェル (zsh) を使用しているため、これは自動的には行われませんでした。しかし、興味深いのは、Python は同じシェルの Charles Proxy に正しく表示されますが、Go は正しく表示されないことです。.zshrc (または使用しているシェルまたはプロファイルの構成) を更新して、適切な変数をエクスポートするとうまくいきました。

于 2015-12-15T17:09:30.143 に答える
4

ProxyFromEnvironment関数を使用してプロキシ情報を取得できます。次に、プロキシ設定に関する情報を持つトランスポート (RoundTripper インターフェイスで表される) を使用して http クライアントを作成します。

var PTransport http.RoundTripper = &http.Transport{Proxy: http.ProxyFromEnvironment}

client := http.Client{Transport: PTransport}

次に、渡された関数からProxy構造体フィールドへの情報トランスポート取得を使用して、http 要求を実行します。プロキシ情報は$HTTP_PROXY環境変数から取得されます。

于 2013-08-12T13:38:47.937 に答える