Python Selenium配置Proxy后IP地址未变更的问题求助
解决Selenium配置代理后IP未变更的问题
嘿,我之前也碰到过一模一样的坑!你用DesiredCapabilities配置代理的方式在新版本Selenium里已经不太可靠了,加上还有几个容易忽略的细节,给你整理几个实用的解决方案:
改用ChromeOptions直接设置代理
现在Selenium官方更推荐通过Chrome启动参数--proxy-server来配置代理,比修改DesiredCapabilities兼容性更好。把你代码里的代理配置部分替换成下面这样:random_proxy = '124.240.187.80:82' chrome_options.add_argument(f'--proxy-server=http://{random_proxy}')直接把代理参数传给Chrome启动命令,能大幅提升配置成功率。
先验证代理是否有效
很多免费代理其实已经失效了!你可以先在终端用curl测试这个代理能不能正常工作:curl -x http://124.240.187.80:82 https://whatismyip.com如果返回的IP不是代理地址,说明这个代理本身就不能用,得换一个可用的代理源。
禁用Chrome的自动代理和缓存干扰
Chrome有时候会自动调用系统代理,或者缓存旧的IP信息,你可以加上这些参数规避:chrome_options.add_argument('--no-proxy-server') # 清空系统代理设置 chrome_options.add_argument('--disable-cache') # 禁用缓存 chrome_options.add_argument('--incognito') # 用无痕模式启动,彻底避免缓存影响检查版本匹配性
Selenium、ChromeDriver和Chrome三者版本不匹配,也会导致各种配置失效!比如Chrome是118.x版本,ChromeDriver必须对应118.x的版本,Selenium建议用4.x以上的版本,兼容性会更好。
修改后的完整代码示例
from selenium import webdriver from selenium.webdriver.chrome.options import Options if __name__ == '__main__': chromedriver_path = '/usr/local/bin/chromedriver' window_size = "1920,1080" chrome_options = Options() chrome_options.add_argument("--window-size=%s" % window_size) # 改用ChromeOptions配置代理 random_proxy = '124.240.187.80:82' chrome_options.add_argument(f'--proxy-server=http://{random_proxy}') # 添加防干扰参数 chrome_options.add_argument('--no-proxy-server') chrome_options.add_argument('--disable-cache') chrome_options.add_argument('--incognito') chromedriver = webdriver.Chrome( executable_path=chromedriver_path, options=chrome_options ) chromedriver.get('https://whatismyip.com')
你可以按这个思路试试,应该能解决IP不变更的问题!
内容的提问来源于stack exchange,提问作者Anh Ho Phi Duc
相关产品推荐
相关产品推荐

