Python HTTPX 代理接入示例
使用 HTTPX Client、账密环境变量和分层超时完成同步代理请求。
只只HTTP技术团队维护更新于 2026年7月31日
HTTPX 适合同步服务和需要连接池的 Python 项目。HTTPS 目标仍通过 HTTP 代理 URL 建立 CONNECT 隧道,代理地址格式为 http://<gateway-host>:<gateway-port>。
前置条件
- 调用方项目自行安装并锁定
httpx。 - 从控制台取得当前有效的网关、端口、代理用户名和密码。
- 通过受控环境注入
PROXY_HOST、PROXY_PORT、PROXY_USERNAME和PROXY_PASSWORD。
完整示例
import os
from urllib.parse import quote
import httpx
proxy_username = quote(os.environ["PROXY_USERNAME"], safe="")
proxy_password = quote(os.environ["PROXY_PASSWORD"], safe="")
proxy_host = os.environ["PROXY_HOST"]
proxy_port = os.environ["PROXY_PORT"]
proxy_url = (
f"http://{proxy_username}:{proxy_password}"
f"@{proxy_host}:{proxy_port}"
)
timeout = httpx.Timeout(30.0, connect=10.0)
with httpx.Client(proxy=proxy_url, timeout=timeout) as client:
response = client.get("https://<public-test-host>/ip")
response.raise_for_status()
print(response.json())
预期结果
- 请求返回成功状态并显示代理出口 IP。
- 返回地区应与代理用户名中的地区参数一致;随机区域以本次实际出口为准。
- 同一个
Client可以复用连接,不要为每个请求重复创建客户端。
错误处理
- 收到 407 时先检查完整用户名、密码和当前套餐权益。
ConnectTimeout表示代理连接阶段超时,ReadTimeout表示等待目标响应超时。- 只对可安全重放的请求做有限退避重试。
安全提示
不要记录 proxy_url、请求头或异常对象中的完整代理信息。日志只保留任务标识、目标主机、错误类型和脱敏后的 requestId。
这篇内容解决了你的问题吗?
反馈只用于改进公开文档,不会提交账号或请求信息。