httpキーしか設定していない
キーが表すのは宛先のスキームで、プロキシのスキームではありません。httpだけの辞書では、平文のHTTPはプロキシを通りますが、HTTPSの呼び出しはすべて直接出ていき、それを知らせるエラーも出ません。
要点: httpとhttpsの両方のキーを持つproxies辞書を渡し、どちらにもhttp://USERNAME:PASSWORD@HOST:PORTを設定すると、requestsはその呼び出しをプロキシ経由で送ります。HTTPSの宛先へはトンネルとしてプロキシを通ります。SOCKS5の場合は、requests[socks]をインストールし、注文でプロキシをSOCKS5に切り替えて、socks5hスキームを使います。こうすると、ホスト名の名前解決はお客様のマシンではなくプロキシが行います。
Python requestsは、宛先URLのスキームとプロキシURLを対応づけた辞書からプロキシを読み取ります。このガイドでは、1つの静的ISPアドレスのためにその辞書を設定し、辞書を置ける3つの場所を示します。呼び出し、セッション、環境変数です。
当社のものを含め、ほとんどのプロキシはユーザー名とパスワードを求めます。requestsはそれをプロキシURLから読み取り、接続のたびにプロキシへ送ります。HTTPSの宛先に対しては、プロキシはトンネルを開くだけで、リクエストの中身を見ることはありません。コードのタブには、リクエストごとの形とセッションの形があります。
ホスト、ポート、ユーザー名、パスワードです。ダッシュボードの「マイプロキシ」か、APIの注文情報から取得します。4つの値はアドレスごとに別々で、共有のゲートウェイはありません。
http://USERNAME:PASSWORD@HOST:PORTです。パスワードに/、?、#、%が含まれる場合は、先にurllib.parse.quote(password, safe="")でURLエンコードしてください。
httpキーとhttpsキーに同じURLを渡します。httpだけを設定すると、HTTPSのリクエストはすべてプロキシを通らず、お客様自身のアドレスから送られます。
呼び出し元のIPを表示するページにリクエストを送るか、同じプロキシ経由でWhat Is My IPを開き、購入したアドレスになっていることを確かめます。
必ずtimeout=を渡してください。requestsは既定では無期限に待つため、接続が止まるとスクリプトが固まったように見えます。
import requests
# The four values come with your order (dashboard or API)
proxy = "http://USERNAME:PASSWORD@HOST:PORT"
response = requests.get(
"https://example.com/",
proxies={"http": proxy, "https": proxy},
timeout=30,
)
response.raise_for_status()
print(response.status_code)
import requests
proxy = "http://USERNAME:PASSWORD@HOST:PORT"
with requests.Session() as session:
# HTTP_PROXY / HTTPS_PROXY in the environment would override
# session.proxies; this makes the session use only its own setting.
session.trust_env = False
session.proxies.update({"http": proxy, "https": proxy})
response = session.get("https://example.com/", timeout=30)
response.raise_for_status()
print(response.status_code)
# pip install "requests[socks]"
import requests
# Switch the proxy to SOCKS5 first; use the values the order then shows.
# socks5h: the proxy resolves the hostname, not your machine.
proxy = "socks5h://USERNAME:PASSWORD@HOST:PORT"
response = requests.get(
"https://example.com/",
proxies={"http": proxy, "https": proxy},
timeout=30,
)
response.raise_for_status()
print(response.status_code)
どのサンプルも、ユーザー名とパスワード付きのHTTPプロキシで接続します。例外はSOCKS5のサンプルで、先にプロキシをSOCKS5に切り替える必要があります。切り替えると、注文に新しいポートと新しい認証情報が表示されるので、それを使います。4つの大文字の部分を、お客様の注文の値に置き換えてください。
| 適用範囲 | 認証情報 | 使う場面 | |
|---|---|---|---|
| 呼び出しのproxies= | その1回のリクエスト | URLの中 | 呼び出しが数回だけのスクリプト |
| Session.proxies | セッションのすべてのリクエスト | URLの中 | それより長い処理。trust_envをFalseにして使う |
| HTTP_PROXYとHTTPS_PROXY | プロセス内のすべてのrequestsの呼び出し | URLの中 | 編集できないコード。NO_PROXYには経由させないホストを並べる |
| socks5h:// URL | 設定した範囲すべて | URLの中 | ホスト名をプロキシ側で名前解決させたいとき |
キーが表すのは宛先のスキームで、プロキシのスキームではありません。httpだけの辞書では、平文のHTTPはプロキシを通りますが、HTTPSの呼び出しはすべて直接出ていき、それを知らせるエラーも出ません。
socks5では、お客様のマシンがホスト名を名前解決し、プロキシにはIPを渡します。socks5hではプロキシが名前解決するので、問い合わせもその応答もプロキシのネットワークから来ます。所在地によって応答を変えるサイトでは、この違いが効いてきます。
パスワードにスラッシュ、疑問符、シャープが含まれるとURLがそこで切れてしまい、requestsはプロキシに届く前に失敗します。パーセント記号はエスケープとして解釈されます。パスワードをURLエンコードするか、IPホワイトリスト認証を使って認証情報を書かないようにしてください。
セッションでtrust_envをFalseにしない限り、requestsはHTTP_PROXY、HTTPS_PROXY、NO_PROXYを読み込み、これらの変数はSession.proxiesより優先されます。サーバーに古い変数が残っていると、セッションの通信が意図しない宛先に送られたり、プロキシを迂回したりすることがあります。
ユーザー名とパスワードをプロキシURLに入れて、http://USERNAME:PASSWORD@HOST:PORTとし、httpとhttpsの両方のキーに渡します。requestsは認証情報をプロキシに送り、それが間違っていればプロキシは407を返します。予約文字を含むパスワードはエンコードするか、代わりにIPホワイトリストを使ってください。
pip install requests[socks]で追加パッケージをインストールし、注文でプロキシ自体をSOCKS5に切り替え、その後に注文に表示されるポートと認証情報をsocks5h:// URLで使います。スキームを変えるだけでは足りません。HTTPに設定されたアドレスは、切り替えるまでSOCKS5に応答しません。 SOCKS5
はい。スクリプトを実行する公開IPv4アドレスを、API呼び出し1回(PUT /orders/ORDER_ID/whitelist)か、MCPサーバー経由でプロキシのホワイトリストに追加します。ダッシュボードにはまだ設定項目がありません。追加すると、プロキシはそのアドレスからの接続を認証情報なしで、HTTPでもSOCKS5でも受け入れ、URLはhttp://HOST:PORTになります。ホワイトリストが設定されている間、プロキシは一覧にあるアドレスだけを受け入れ、その注文ではユーザー名とパスワードが使えなくなります。空のリストを送るとホワイトリストがオフになり、パスワードでのログインがふたたび使えるようになります。
しません。静的ISPプロキシは、お支払いいただいた期間中ずっと1つのアドレスで、そこを通して送るリクエストはすべてそのアドレスから出ていきます。リクエストごとに別のアドレスが必要なジョブにはローテーションのプールが必要ですが、当社ではまだ販売していません。
同じプロキシ経由で、呼び出し元のアドレスを返すページにリクエストを送るか、そのプロキシを設定したブラウザでWhat Is My IPを開きます。お客様自身のアドレスが表示される場合は、おそらくhttpsキーが抜けています。 What Is My IP
自社サイトの地域別テスト、品質チェック、広告検証、価格調査や市場調査、ブランド保護は、当社の適正利用ポリシーのもとで事前審査なしに行えます。プロキシでCAPTCHA、ボット検出、レート制限、アカウント停止を回避することはできず、それを試みることもポリシーで禁止しています。 適正利用ポリシー