要在 JSON 中保存多个代理 URL,请使用数组:

[
  "http://192.0.2.10:8080",
  "http://192.0.2.20:3128",
  "http://192.0.2.30:8080"
]

每一项都是一个端点,并带有自己的协议。对于公共 HTTP 候选池,HTTP 代理列表提供可格式化为这些 URL 的地址。用 json.dumps 序列化 Python 列表,会自然地产生这种结构。

在同一个对象里重复 http 成员名并不可靠。JSON 的互操作指南要求名称唯一,而 Python 的常规解码器对重复名称保留最后一个值。其他解码器的行为可能不同;都不应指望它把重复键解释成代理池。

保存下来的数组是池的数据格式,而不是某一次 Requests 调用的 proxies 参数。先选定一个端点,再构建该请求所需的目标方案映射。存储可以保留每个候选,而不必假装 HTTP 客户端在只接受一个代理 URL 的地方能接受列表。

相关文章