如果直连请求遇到重定向,而随后的交换在代理处失败,请检查这次转换。Requests 会为重定向重新构建与代理相关的设置,并且当 Session 信任该设置时,它可能再次查询环境。

映射取值合并过程中会发生什么
None该键被删除,留下一个缺失条目,后续处理可能从环境补上它。
空字符串显式值得以保留;它可以为该协议保持直连路由的意图。

对于已存在的 Session,请提供直连操作涉及的目协议:

response = session.get(
    'https://example.com/start',
    proxies={'http': '', 'https': ''},
    timeout=15,
)

如果应用提供了额外的按主机映射和自定义适配器,请一并检查。这一路由输入并不会覆盖这些组件所实现的每一种可能策略。

在诊断中保留每一个 URL

记录原始 URL、每一处重定向位置、响应状态以及失败的阶段。HTTP 变为 HTTPS 会改变相关的协议键;新的主机可能落在第一个主机的绕过规则之外。只包含初始 URL 的报告会同时掩盖这两次转换。

在关闭重定向跟随的情况下观察一次响应,可以暴露边界。在决定请求它之前,先把这个位置当作数据来检查;不要不加区分地把原始凭据发往新的目的地。

当应用有意掌管所有路由与信任输入时,关闭环境发现的专用 Session 是另一种选择。这也会影响凭据与 CA 的自动发现,因此应把它作为应用策略来选择,而不是当作常规的重定向修复。

相关文章