为单个 geopy 地理编码器配置带认证的 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 文档化的接口支持 HTTP 代理,包括 CONNECT;但写成 https 本身并不会与监听端建立 TLS。
以这套稳定策略复用该地理编码器。在单次调用前后切换环境变量,可能干扰另一个同时工作的地理编码器。