构建 Python 3 的 urllib opener,同时带上代理路由与已开启调试级别的协议 handler:

from urllib.request import (
    HTTPHandler, HTTPSHandler, ProxyHandler, build_opener,
)

opener = build_opener(
    ProxyHandler({
        'http': 'http://proxy.example:8080',
        'https': 'http://proxy.example:8080',
    }),
    HTTPHandler(debuglevel=1),
    HTTPSHandler(debuglevel=1),
)
with opener.open('https://www.example.com/', timeout=10) as response:
    print(response.status)

HTTPHandler 与 HTTPSHandler 提供跟踪选项。ProxyHandler 负责提供路由,并不负责这项协议调试设置。上面示例中的公开请求在允许公共中间人时可以使用 HTTP 代理列表 中未经校验的地址;请勿把 cookie 与账户 token 带入这次诊断性对比。

底层 http.client 的调试输出会打印到标准输出。它可以显示已发送的请求字节与收到的响应头,有助于定位代理的认证挑战、隧道拒绝或后续的目标响应。

使用受控的请求,并让凭据、cookie 与 token 远离共享的跟踪输出。

相关文章