ファイルからプロキシを1つ選び、そのうえでウェブサイトへのリクエスト用のルートマップを組み立てます。候補エンドポイントのプールは、それ自体が Requests のルーティング辞書ではありません。

  1. 定義された形式に従って行を解析します。 非公式な IP:port:user:password 行は、IPv6 アドレスや認証情報にコロンが含まれると曖昧になります。IPv4 ホスト、数値ポート、コロンを含まないユーザー名であれば、分割を限定して残りのテキストをパスワードとして残せます。これらの制約が当てはまらない場合は、別々の構造化フィールドを使ってください。
  2. この操作に使うエンドポイントを選びます。 実際のプロトコルを保ち、URL を組み立てるときに 認証情報の構成要素をエンコードします。その秘密を含む値は通常のログに出さないでください。
  3. 宛先スキームをその選択した URL にマッピングします。 選択した HTTP プロキシ1つに対して、マップは次のようになります。
routes = {
    'http': selected_proxy_url,
    'https': selected_proxy_url,
}

http と https というキーは宛先スキームを選びます。http://203.0.113.10 のようなキーは代わりに、まさにその宛先ホストへのリクエストを選びます。そのアドレスのプロキシにラベルを付けるものではありません。すべてのプロキシ IP をキーにすると、無関係なウェブサイトが意図したルートを失うことがあります。

プールを一度解析し、エンドポイントを選び、クライアント呼び出し用のマッピングを作成します。これらの手順を分けておけば、Requests のルーティングキーの意味を変えずに選択ポリシーを変更できます。

関連記事