1

スクリプトでモジュールを使用していますが、メソッドのパラメーターrequestsを理解したいと考えています。この回答では、パラメーターの使用法を説明するために次のコードを投稿しました。proxiesget()proxies

http_proxy  = "10.10.1.10:3128"
https_proxy = "10.10.1.11:1080"
ftp_proxy   = "10.10.1.10:3128"

proxyDict = {"http":http_proxy,  "https":https_proxy, "ftp":ftp_proxy }

r = requests.get(url, headers=headers, proxies=proxyDict)

ここに私の質問があります:

  1. に複数のプロキシを渡すのはなぜget()ですか? それらをどのようにget()使用しますか?一つ一つ試す?

  2. プロキシが次のように言うと、a.b.c.d:portそのプロトコルの種類をどのように知ることができますか? hidemyass.comからプレミアム プロキシを購入すると、プロキシはip:portフォーマットのみで送信され、プロトコル タイプは送信されません。requests.get()では、メソッドに何を渡す必要がありますか?

私は一般的なプロキシとその仕組みについてあまり知らないので、これらの疑問を抱いています。誰かがこれについても説明してくれれば素晴らしいことです。

4

1 に答える 1

5
  1. .get()ディクショナリ内のキーが URL のスキームと一致するプロキシを使用します。つまり、' http://www.google.com/ ' にアクセスする、キーが 'http' であるプロキシ (この例ではhttp_proxy) が使用されます。「 https://www.google.com/ 」にアクセスすると、キーが「https」(この例ではhttps_proxy)のプロキシが使用されます。

  2. 簡単に言えば、有料のプロキシは HTTP と HTTPS の両方の URL を受け入れる必要があるということです。

    実際には、これは 2 つの予期しないことを行う Requests によって複雑になります。まず、質問で提供した形式 (つまりip:port) でプロキシ アドレスを使用する場合、Requests は、プロキシへのアクセスに使用されるプロトコルが、プロキシしているプロトコルと同じであると想定します。つまり、http_proxy内部で"http://10.10.1.10:3128"、およびhttps_proxyに変換され"https://10.10.1.11:1080"ます。これは通常、希望するものではないため、常に明示的にフォームを使用する必要がありますscheme://ip:port

    2 つ目は、Requests は現在、プロキシ経由の HTTPS で実際の問題を抱えていることです。一般に、それらは機能しないと想定する必要がありますが、実際にはそれよりも少し複雑です。

    これらの問題は両方とも、予定されている V2.0 リリースで対処される可能性があります。

詳細を知りたい場合は、Requests のプロキシに関するブログ記事を書きました。

プロキシがどのように機能するかについては、その目的は HTTP リクエストを受け入れて宛先に転送することです。通常、これらは次の 2 つの理由のいずれかで使用されます。HTTP リクエストを変更する (場合によってはそれらを完全にドロップする) か、HTTP リクエスト/レスポンスをキャッシュするためです。ウィキペディアには、始めるための優れた記事があります。

于 2013-07-22T08:01:45.620 に答える