HTTPX/Requests代理配置异常:请求仍使用真实IP如何解决?
代理配置错误排查与正确设置
你的核心问题是代理URL格式完全错误,导致HTTPX和Requests都无法正确识别代理,直接走了本地网络。
正确的代理URL格式
带身份验证的代理URL必须遵循以下结构:
http://用户名:密码@代理主机地址:端口号
你当前写的http://username:pw.io:hostname把密码、主机地址的逻辑完全搞混了,需要把商家提供的用户名、密码、主机地址、端口号按正确顺序拼接。
Requests 正确配置示例
import requests # 修正后的代理格式:http://用户名:密码@代理地址:端口 proxies = { "http": "http://your_username:your_password@proxy_host:proxy_port", "https": "http://your_username:your_password@proxy_host:proxy_port" # 多数代理同时支持HTTP和HTTPS请求 } response = requests.get('http://ipinfo.io/json', proxies=proxies) print(response.text)
HTTPX 正确配置(两种方式)
方式1:直接通过proxies参数(单次请求)
import httpx proxies = { "http://": "http://your_username:your_password@proxy_host:proxy_port", "https://": "http://your_username:your_password@proxy_host:proxy_port" } response = httpx.get('http://ipinfo.io/json', proxies=proxies) print(response.text)
方式2:使用Client对象(推荐用于批量抓取,复用连接)
import httpx proxies = { "http://": "http://your_username:your_password@proxy_host:proxy_port", "https://": "http://your_username:your_password@proxy_host:proxy_port" } with httpx.Client(proxies=proxies) as client: response = client.get('http://ipinfo.io/json') print(response.text)
额外检查要点
- 确认代理商家提供的主机地址、端口、用户名、密码完全正确,不要遗漏任何字段
- 如果代理分HTTP和HTTPS专用,要分别对应配置
http://和https://的代理项 - 测试时可以先去掉身份验证(如果是公开代理),确认代理本身能连通,再加上认证信息
内容的提问来源于stack exchange,提问作者MrRementer
相关产品推荐
相关产品推荐

