geopy のジオコーダー1つに認証付き HTTP プロキシを設定する
プロキシの生の資格情報を一度だけエンコードし、検索のたびに共有プロセス環境を変えるのではなく、ジオコーダーの明示的なマッピングを選びます。
ジオコーダーを独自の経路で構築します:
from urllib.parse import quote
from geopy.geocoders import GoogleV3
account = quote(proxy_user, safe='') + ':' + quote(proxy_password, safe='')
proxy_url = f'http://{account}@proxy.example:8080'
geocoder = GoogleV3(
api_key=google_api_key,
proxies={'http': proxy_url, 'https': proxy_url},
timeout=10,
)アプリケーションは両方のアカウントを用意します。google_api_key は Google のジオコーディングを認可し、URL 内のユーザー名とパスワードはプロキシを認可します。 その生の構成要素を一度だけエンコードする ことで、URL の構造的な区切り文字はエンコードの外に置けます。
| proxies の値 | geopy のポリシー |
|---|---|
| None | システム検出を許可 |
| {} | 直接アクセスを選択 |
| 空でないマッピング | 指定した経路を選択 |
https キーは HTTP プロキシ経由で運ばれる HTTPS 宛先に対応します。geopy の文書化されたインターフェースは CONNECT を含む HTTP プロキシをサポートしますが、https という表記自体がリスナーへの TLS を確立するわけではありません。
その安定したポリシーでジオコーダーを再利用します。個々の呼び出しの周りで環境値を切り替えると、同時に動作する別のジオコーダーに干渉する可能性があります。