Python requests配置轮换代理请求API仍泄露本机IP问题求助
问题根因排查
1. 核心配置错误:未配置HTTPS代理规则
你当前请求的目标接口是HTTPS协议,但你在proxies返回值中只配置了http协议的代理规则,requests库对HTTPS请求会优先匹配proxies中的https条目,未匹配到的情况下会直接直连目标服务器,因此所有请求都会透传本机真实IP。
2. 代理类型问题
即使修复上述配置,若你使用的是透明代理,代理服务器会自动在请求头中添加X-Forwarded-For、X-Real-IP等字段记录本机真实IP,目标服务端仍可读取到真实IP。
3. 系统代理规则冲突
requests默认会读取系统的HTTP_PROXY/HTTPS_PROXY/NO_PROXY环境变量,若目标域名被配置在NO_PROXY规则中,也会导致请求不走代理。
修复方案
第一步:修改代理配置,同时添加HTTP/HTTPS代理规则
def proxies(self): self.randomProxy = random.choice(self.proxyList) proxy_url = f'http://{self.randomProxy}' return { 'http': proxy_url, 'https': proxy_url }
第二步:添加trust_env参数禁止读取系统代理配置
修改requests.post调用,添加trust_env=False参数,避免系统代理规则干扰:
r = requests.post( "https://public-ubiservices.ubi.com/v3/profiles/sessions", json={"Content-Type":"application/json"}, headers=self.headers, proxies=self.proxy, trust_env=False )
第三步:代理有效性校验
优先选用高匿代理,修复代码后先单独测试代理可用性:用代理请求IP查询接口确认返回IP为代理IP后再对接目标接口。
额外优化点
如果代理需要身份认证,代理URL格式调整为http://用户名:密码@代理IP:端口。
内容的提问来源于stack exchange,提问作者user16246484
相关产品推荐
相关产品推荐

