跳到正文
本中心目录
代码示例

Python HTTPX 代理接入示例

使用 HTTPX Client、账密环境变量和分层超时完成同步代理请求。

只只HTTP技术团队维护更新于 2026年7月31日

HTTPX 适合同步服务和需要连接池的 Python 项目。HTTPS 目标仍通过 HTTP 代理 URL 建立 CONNECT 隧道,代理地址格式为 http://<gateway-host>:<gateway-port>

前置条件

  • 调用方项目自行安装并锁定 httpx
  • 从控制台取得当前有效的网关、端口、代理用户名和密码。
  • 通过受控环境注入 PROXY_HOSTPROXY_PORTPROXY_USERNAMEPROXY_PASSWORD

完整示例

Python
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。

这篇内容解决了你的问题吗?

反馈只用于改进公开文档,不会提交账号或请求信息。