Twisted ProxyAgent:明文 HTTP 的 Basic 认证
使用字节值请求头,通过 Twisted ProxyAgent 发送经过认证的明文 HTTP 请求。
ProxyAgent 通过传给它的 endpoint 建立连接。对于明文 HTTP 请求以及接受 Basic 认证的代理,把代理登录信息放在该请求的 Proxy-Authorization 头里。
import base64
from twisted.internet.endpoints import TCP4ClientEndpoint
from twisted.web.client import ProxyAgent
from twisted.web.http_headers import Headers
endpoint = TCP4ClientEndpoint(reactor, 'proxy.example', 8080,
timeout=5)
agent = ProxyAgent(endpoint, reactor=reactor)
token = base64.b64encode(b'alice:REPLACE_WITH_PROXY_PASSWORD')
headers = Headers({b'Proxy-Authorization': [b'Basic ' + token]})
pending = agent.request(b'GET', b'http://example.com/', headers)这段代码假定应用已经拥有自己的 reactor。方法、URI 以及示例中的头部数据都使用字节。真实凭据应保存在应用的凭据来源中;占位符只展示头部是如何构造的。Base64 只是一种编码,因此机密性取决于承载它的连接。
返回的 Deferred 会给出一个响应对象。收到该对象并不会收集响应体;请通过文档所述的响应体读取接口读取,并处理异步失败。endpoint 的超时限制的是连接建立,而不是响应的整个生命周期。
示例有意使用 HTTP 目标。仅仅改变 URI 方案并不会为 HTTPS 增加 CONNECT 协商。