用独立路由构造地理编码器:

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。

以这套稳定策略复用该地理编码器。在单次调用前后切换环境变量,可能干扰另一个同时工作的地理编码器。

相关文章