Python Requests 代理怎么配置?四种方式与验证

先说结论:直接回答
Python Requests 可以通过 proxies 参数为单次请求设置代理,通过 Session.proxies 为多个请求复用设置,也可以读取 HTTP_PROXY 和 HTTPS_PROXY 环境变量。SOCKS5 需要安装 requests[socks];目标域名需要由代理端点解析时使用 socks5h。应始终设置超时、捕获 Requests 异常、通过允许使用的端点验证,并把真实凭证留在代码仓库之外。
配置范围应尽量小:单次请求字典最容易审核,Session 适合重复调用,环境变量只适合影响范围已经明确的受控运行环境。
准备字段并安全读取凭证
| 方式 | 适用情况 |
|---|---|
| 单次请求 | 把 proxies 字典传给当前请求 |
| Session | 多个授权请求共用设置时,写入 Session.proxies |
| 环境变量 | 只在受控运行环境中设置 HTTP_PROXY 和 HTTPS_PROXY |
| SOCKS5 | 安装 requests[socks];socks5 本机解析,socks5h 由代理端点解析 |
| 可靠性 | 设置连接与读取超时,捕获 Requests 异常,并验证允许访问的响应 |
共享代码中只保留 PROXY_SCHEME、PROXY_HOST、PROXY_PORT、PROXY_USER 和 PROXY_PASSWORD 占位符。运行时从受保护位置构造端点,包含凭证的最终 URL 不要打印到日志。
读取受保护字段后再拼接认证 URL。校验失败时只提示缺少哪个字段,不要打印完整 URL,因为完整值可能同时暴露用户名和密码。
单次请求配置
import requestsproxy_url = "http://USERNAME:PASSWORD@HOST:PORT" proxies = {"http": proxy_url, "https": proxy_url} response = requests.get("", proxies=proxies, timeout=(5, 20)) response.raise_for_status()


