如何用Python Selenium隐藏公网IP?代理失效问题求助
解决Selenium代理无法隐藏真实公网IP的问题
问题分析与修复方案
1. 更换代理类型,避免透明代理
透明代理会向目标网站暴露你的真实IP,必须使用匿名代理或高匿代理。如果当前代理是透明类型,立即更换后再测试。
2. 移除现有用户配置的干扰
你代码中指定了user-data-dir和profile-directory,已有的Chrome用户配置可能自带系统代理、旧代理设置,会覆盖seleniumwire的代理配置。建议:
- 先注释掉这两行,用全新临时配置测试:
# chrome_options.add_argument("user-data-dir=C:/Users/USER/AppData/Local/Google/Chrome/User Data/Profiles") # chrome_options.add_argument(r'--profile-directory='+profilename) - 若必须用现有配置,先手动在该Chrome配置里关闭系统代理、清除旧代理记录。
3. 完善seleniumwire代理配置
确保同时配置http和https代理,避免部分HTTP请求走本地网络:
options = { 'proxy': { 'http': 'http://' + str(i) + '', 'https': 'https://' + str(i) + '', 'no_proxy': 'localhost,127.0.0.1,dev_server:8080' } }
如果代理需要账号密码,补充认证信息:
options = { 'proxy': { 'http': 'http://用户名:密码@代理地址:端口', 'https': 'https://用户名:密码@代理地址:端口', 'no_proxy': 'localhost,127.0.0.1,dev_server:8080' } }
4. 禁用Chrome系统代理自动检测
Chrome可能自动使用系统代理,导致请求绕过你设置的代理,添加以下参数强制关闭:
chrome_options.add_argument('--no-proxy-server') chrome_options.add_argument('--disable-default-apps')
5. 验证代理全局生效
运行脚本后,通过seleniumwire日志确认所有请求都走了代理:
for request in browser.requests: print(request.url, request.proxy) # 查看每个请求使用的代理地址
内容的提问来源于stack exchange,提问作者Vuqar
相关产品推荐
相关产品推荐

