from http.client import HTTPSConnection
conn = HTTPSConnection("localhost", 8888)
conn.set_tunnel("www.sample.com", 443, headers={"Connection": "keep-alive"})
conn.connect()
如何修改 HTTPSConnection 以使用不同的 HTTP 版本? 默认情况下它继续使用 HTTP/1.0。
“连接 www.sample.com:443 HTTP/1.0”
“连接 www.sample.com:443 HTTP/1.1”
来自
http.client.HTTPConnection.set_tunnel
文档:
由于 HTTP/1.1 用于 HTTP CONNECT 隧道请求,根据 RFC,必须提供 HTTP Host: 标头,与作为 CONNECT 请求目的地提供的请求目标的权限形式相匹配。如果未通过 headers 参数提供 HTTP Host: 标头,则会自动生成并传输一个标头。
尽管它说它将自动生成,但您是否尝试过手动将
Host
标头添加到 set_tunnel()
方法调用中?
示例:
conn.set_tunnel("www.sample.com", 443, headers={"Connection": "keep-alive", "Host": "www.sample.com:443"})