为什么Python requests配置代理后未生效,仍展示真实IP?
问题根因
你配置的proxies字典仅指定了HTTP协议请求走代理,当访问HTTPS协议的IP查询站点时,requests无法匹配到https对应的代理规则,会直接使用本地网络发起请求,因此不会触发报错,也不会走你配置的代理。
解决方案
- 补全HTTPS协议的代理配置
若使用的代理同时支持HTTP/HTTPS转发,直接补充https对应的代理项即可,示例代码:import requests proxies = { "http": "http://123.123.123.123:8080", "https": "http://123.123.123.123:8080" } requests.get("https://exampleurl.com", proxies=proxies) - 适配socks5代理的配置规则
若使用socks5代理,需要修改代理协议前缀,同时补全HTTP、HTTPS两项配置:proxies = { "http": "socks5://127.0.0.1:1080", "https": "socks5://127.0.0.1:1080" } - 关闭环境变量代理覆盖
requests会默认读取系统的HTTP_PROXY、HTTPS_PROXY等环境变量,优先级高于代码中传入的proxies参数。可通过添加trust_env=False参数强制忽略环境变量配置:requests.get("https://exampleurl.com", proxies=proxies, trust_env=False) - 排查重定向与代理有效性
可以添加allow_redirects=False参数关闭自动重定向,确认首次请求是否走代理;也可先通过其他工具验证代理本身的可用性,排除代理失效问题。
内容的提问来源于stack exchange,提问作者user15446500
相关产品推荐
相关产品推荐

