0

そこで、wireshark を使用してトラフィックを調べ、さまざまな状況での出力を比較しています。自分と google.co.za の間のトラフィックだけを見ています。

状況 1: プロキシを使用せずに google.co.za にアクセスする

requests.get('www.google.co.za')

これは status=200 の応答を返し、wireshark は私の PC と Google のサーバーの間を通過するトラフィックに関する情報を表示します。これはこれまでのところ素晴らしいです。

状況 2: 有効な http プロキシを使用して google.co.za にアクセスする

requests.get("http://google.co.za",proxies={'http':proxy})

これは status=200 の応答を返し、wireshark は私の PC と Google のサーバーの間を通過するトラフィックに関するデータを表示しません。これは素晴らしいことであり、期待されています。

状況 3: 有効なソックス プロキシを使用して google.co.za にアクセスする

requests.get("http://google.co.za",proxies={'socks':proxy})

状況ごとの結果 1.うーん

状況 4: https との同じ取引

requests.get("http://google.co.za",proxies={'https':proxy})

状況 1 と同じ結果。

質問

したがって、https を使用しようとすると、socks プロキシ リクエストはプロキシ引数が空であるかのように動作するように見えます。現在、あらゆる種類のプロキシを介してトラフィックを渡す必要があり、サイレント障害は望んでいません。

私の質問は次のとおりです。なぜ物事が静かに失敗するのですか?それを修正するにはどうすればよいですか?

4

1 に答える 1

1

RequestsSOCKS または HTTPS プロキシをまだサポートしていません。

しかし、彼らはそれに取り組んでいます。こちらをご覧ください: https://github.com/kennethreitz/requests/pull/1515

HTTPS プロキシのサポートは既にrequests 2.0ブランチにマージされているため、必要に応じてそのバージョンを試すことができます。ただし、現在不安定なブランチであるため、注意してください。

一方、SOCKS プロキシのサポートは、下位レベルのライブラリでまだ作業中ですurllib3: https://github.com/shazow/urllib3/pull/68

また、それにもかかわらず、proxies引数を間違って使用しています。これは の形式である必要がある{protocol_of_sites_you_visit: proxy}ため、サポートが完了すると、SOCKS5 プロキシを使用すると、実際には のようになります{"http": "socks5://127.0.0.1:9050"}

于 2013-08-26T14:46:49.620 に答える