在 PycURL 中分别设置代理与源站的 CA 包
对到中间代理的 TLS 使用 https 代理 URL,用 PROXY_CAINFO 验证该端,用 CAINFO 验证目标站。
from io import BytesIO
import pycurl
body = BytesIO()
curl = pycurl.Curl()
try:
curl.setopt(pycurl.URL, "https://api.example/")
curl.setopt(pycurl.PROXY, "https://proxy.example:8443")
curl.setopt(pycurl.PROXY_CAINFO, "/path/to/proxy-ca.pem")
curl.setopt(pycurl.CAINFO, "/path/to/origin-ca.pem")
curl.setopt(pycurl.CONNECTTIMEOUT, 5)
curl.setopt(pycurl.TIMEOUT, 30)
curl.setopt(pycurl.WRITEDATA, body)
curl.perform()
finally:
curl.close()请使用支持 HTTPS 代理的 PycURL/libcurl 构建。包的路径代表预期的信任集合:PROXY_CAINFO 验证中间代理;CAINFO 验证目标站的 TLS。如果现有信任已覆盖该连接,就不要显式覆盖。
PROXY 中的 URL 描述其监听端。无需对 PROXYTYPE 做数字猜测。对于普通 HTTP 监听端,即使目标是 HTTPS,其 URL 仍为 http://。这种情况下,HTTP 代理列表 提供端点候选;只有当监听端确实使用 TLS 时,代理 TLS 包才适用。
需要时通过 PROXYUSERNAME 和 PROXYPASSWORD 提供代理账号。请保留证书验证:关闭代理验证会移除对中间代理的身份检查,而不是安装缺失的证书颁发机构。