Charles Webデバッグプロキシソフトウェアを使用してHTTPリクエストをデバッグしています。私のデスクトップブラウザ、ChromeおよびFirefox)でうまく機能し、他のプログラムが作成したHTTPリクエストも確認できます。
Charlesを実行してネットワーク構成を確認すると、動作を理解していると思います。すべてのHTTP要求とHTTPS要求にプロキシを設定し、ポート8888でこれらをリッスンします。
しかし、私が理解できない項目は、wget
、curl
、またはelinks
ブラウザーなど、ターミナルで開始する要求が表示されないことです。 。
127.0.0.1:8888を使用してcurlとwgetでプロキシを指定できることは知っていますが、構成でプロキシを使用してネットワークインターフェイスがセットアップされている場合、手動でプロキシを指定する必要がある理由がわかりません。
また、BlueCrab(ウェブサイトのコピー機)をチャールズに表示することもできません-プロキシ設定が表示されません-XWindowラッパーまたは何かを使用しているようです(したがって、実際にはネイティブではありません) Cocoa/Carbonアプリ):
システム上のすべてのHTTPリクエストをCharles経由で実行するにはどうすればよいですか?
説明
私の質問は、curl
、wget
の正しい構文について尋ねるのではなく、ネットワークインターフェイスがもう1つ使用するように設定されているときにcurlとwgetがプロキシを使用しない理由のシステムの基礎についてです。 、など.
VPNは新しいネットワークデバイスを作成し、ifconfig
コマンドでそれを確認してから、すべてのシステムネットワークをそのデバイスにルーティングします。routeuse route
コマンドを確認できます。
ただし、HTTPプロキシ(この場合はチャールズ)は異なります。ポートを開くだけで、それを使用するには、HTTPのものにそのポートを使用するようにアプリケーション設定を指定する必要があります。ケビン・リードの答えとして、curl
、wget
などはOS Xのシステム全体の設定を読みません。
プロキシがSOCKS(Charles supports HTTPとSOCKSの両方)の場合、アプリケーションはプロキシ設定をサポートしていないため、 ProxyChains または tsocks を使用できます。
例えば。:
$ proxychains git clone https://github.com/rofl0r/proxychains-ng
プロキシの背後にあるwget(rcファイルを作成する必要がある場合があります)source
`$ vim ~/.wgetrc`
次の行を追加します。
http_proxy=http://127.0.0.1:8888
カールがプロキシの背後にありますソース
$ vim ~/.curlrc
次の行を追加します。
proxy = 127.0.0.1:8888
elinks behind proxyソース
elinks.conf
ファイルを見つけるには:
Sudo find / -name elinks.conf
次の行を追加します。
protocol.http.proxy.Host "127.0.0.1:8888"
BlueCrabについてわからない
whyすべてのHTTPリクエストのプロキシを取得しない理由は、オペレーティングシステムレベルでは「HTTPリクエスト」などがないためです。 TCP接続のみです。HTTPプロキシに接続することは、HTTPリクエストをわずかに変更することと、URLで指定されたホストの代わりにプロキシサーバーに接続することを意味するため、コードで行う必要があります。 HTTPリクエストの送信を実装します。
curlとwgetには独自のHTTPコードがあり、独自の設定ファイルを使用します。これらは、Mac OS Xが保持するプロキシ設定を探すようにプログラムされておらず、Mac OS Xで提供されるプロキシを使用するHTTPライブラリも使用していません。設定。
設定ファイルに触れたくない場合は、curlを使用して次のことができます。
curl http://example.com --proxy 127.0.0.1:8888