You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何使用CONNECT HTTP动词、操作HTTP头及处理TLS/SSL?

在Python中用CONNECT方法、处理HTTP头和TLS/SSL的实用方案

嘿,你说得没错——requests和标准库的urllib确实没给CONNECT方法提供太顺手的原生支持,手动用sockets加openssl从零实现又太折腾。这里给你两个不用造轮子的方案:

1. 用httpx库(首推)

httpx是个现代的HTTP客户端库,支持HTTP/1.1和HTTP/2,原生就支持CONNECT方法,处理HTTP头和TLS/SSL配置也都很直观。

先安装它

pip install httpx

示例代码:发CONNECT请求+自定义头+SSL配置

import httpx

# 自定义HTTP请求头
custom_headers = {
    "X-Custom-Header": "MyCustomValue",
    "User-Agent": "MyPythonClient/1.0"
}

# SSL配置示例:如果是测试环境需要禁用证书验证(生产环境别这么干!)
ssl_settings = httpx.SSLConfig(verify=False)

# 用Client上下文管理器,自动管理连接
with httpx.Client(headers=custom_headers, ssl=ssl_settings) as client:
    # 发送CONNECT请求到目标服务器/代理
    resp = client.request(
        method="CONNECT",
        url="https://target.example.com:443",
        headers={"Host": "target.example.com"}
    )
    
    # 查看响应状态和头信息
    print(f"响应状态码: {resp.status_code}")
    print("响应头:")
    for k, v in resp.headers.items():
        print(f"  {k}: {v}")

如果需要用自签名证书验证,可以把verify参数换成证书文件路径:

ssl_settings = httpx.SSLConfig(verify="/path/to/your-ca-cert.pem")

2. 用标准库http.client(无额外依赖)

要是不想装第三方库,标准库的http.client也能实现,就是步骤稍微多一点:

示例代码

import http.client
import ssl

# 先连接到代理或者目标服务器
conn = http.client.HTTPSConnection("proxy.example.com", 8080)

# 发送CONNECT请求,自定义头
conn.putrequest("CONNECT", "target.example.com:443")
conn.putheader("Host", "target.example.com")
conn.putheader("X-Custom-Header", "MyValue")
conn.endheaders()

# 获取CONNECT响应
resp = conn.getresponse()
print(f"状态码: {resp.status}")
print("响应头:")
for k, v in resp.getheaders():
    print(f"  {k}: {v}")

# 如果要继续通过这个连接发加密请求,手动用ssl包装socket
ssl_sock = ssl.wrap_socket(conn.sock, server_hostname="target.example.com")
# 发送GET请求示例
ssl_sock.send(b"GET / HTTP/1.1\r\nHost: target.example.com\r\n\r\n")
response_data = ssl_sock.recv(4096)
print("\n加密响应内容:")
print(response_data.decode())

这个方法不用装额外包,但需要自己处理SSL层的包装,适合不想加依赖的场景。

总结

  • 追求简单省心的话,直接用httpx,对CONNECT的支持很友好,头和SSL配置也一步到位。
  • 要纯标准库实现,就用http.client配合ssl模块,虽然麻烦点,但不用额外安装东西。

内容的提问来源于stack exchange,提问作者McDonalds

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 04:13:50