Python Requests 代理接入示例
使用 requests 读取环境变量、设置 HTTP 代理、超时并进行有限错误处理。
只只HTTP技术团队维护更新于 2026年9月20日
示例使用调用方项目自行管理的 requests 依赖。账密网关固定为 us.zzhttp.com:7878,只需从受控环境读取完整代理用户名和子账号密码。
Python requests
import os
from urllib.parse import quote
import requests
proxy_username = quote(os.environ["PROXY_USERNAME"], safe="")
proxy_password = quote(os.environ["PROXY_PASSWORD"], safe="")
proxy_url = f"http://{proxy_username}:{proxy_password}@us.zzhttp.com:7878"
proxies = {"http": proxy_url, "https": proxy_url}
response = requests.get(
"https://ipinfo.io/json",
proxies=proxies,
timeout=(10, 30),
)
response.raise_for_status()
print(response.json())
依赖与配置
- 在项目虚拟环境中安装并锁定依赖。
- 代理值不进入源代码或镜像层。
请求
- HTTP 与 HTTPS 目标均使用同一个 HTTP 代理 URL。
- 分别设置连接和读取超时。
错误处理
- 区分代理错误、连接超时和目标状态。
- 只对幂等请求执行有限重试。
验证步骤
- 在虚拟环境中锁定
requests版本,并通过部署系统注入PROXY_USERNAME和PROXY_PASSWORD。 - 先运行一次无代理请求记录本地出口,再运行示例并读取响应中的
ip、country和region;地区结果来自第三方数据库。 - 分别模拟错误网关端口、错误密码和过短超时,确认异常类型能被区分且日志不含代理字典。
预期结果
raise_for_status()不抛异常,代理请求返回的出口与本地公网 IP 不同。- 错误密码进入
requests.exceptions.ProxyError或对应407响应,连接超时与目标 HTTP 错误保持可区分。
失败边界
- 环境变量缺失会在发起网络请求前抛出
KeyError,不属于代理可用性故障。 - 示例只覆盖单次 HTTP 请求;高并发、连接池、重试和幂等边界应按业务单独设计。
安全
- 异常日志不输出代理字典。
- 响应正文按必要字段记录。
这篇内容解决了你的问题吗?
反馈只用于改进公开文档,不会提交账号或请求信息。