如何在Selenium中使用代理?Selenium无法通过代理连接网站如何解决
问题排查
- 配置传递顺序错误:你在初始化
webdriver.Chrome()之后才定义ChromeOptions参数,所有代理、UA的配置都没有被传入浏览器实例,相当于配置完全未生效。 - 语法缩进错误:
gather_proxy()函数的函数体没有正确缩进,运行时会直接抛出语法错误,无法正常读取代理列表。 - 代理有效性&格式问题:需要确认
proxies.txt中存储的代理格式是否符合Chrome要求,正确格式为协议://IP:端口(如http://192.168.1.1:8080、socks5://192.168.1.1:1080),同时要提前验证代理本身可以正常访问目标网站,大量公开免费代理本身处于不可用状态。 - 你导入了
undetected_chromedriver但实际使用的是原生Selenium的Chrome驱动,两者的配置逻辑存在差异,如果要使用undetected_chromedriver需要对应调整初始化方式。
正确配置方案
修正后的原生Selenium代理配置代码如下:
from fake_useragent import UserAgent from time import sleep from selenium import webdriver import random def gather_proxy(): proxies = [] # 注意文件路径要对应本地实际存储位置 with open('Source/proxies.txt', 'r', encoding='UTF-8') as file: lines = file.readlines() for line in lines: proxies.append(line.strip()) return proxies if __name__ == '__main__': ua = UserAgent() userAgent = ua.random # 先完成所有配置项定义 chrome_options = webdriver.ChromeOptions() proxy = random.choice(gather_proxy()) chrome_options.add_argument(f'user-agent={userAgent}') chrome_options.add_argument(f'--proxy-server={proxy}') chrome_options.add_experimental_option('prefs', { 'credentials_enable_service': False, 'profile': { 'password_manager_enabled': False } }) # 初始化浏览器实例时传入配置参数 driver = webdriver.Chrome(options=chrome_options) try: driver.get('https://www.wieistmeineip.de/') sleep(30) finally: driver.quit()
补充说明:
- 如果使用带用户名密码验证的代理,需要额外配置Chrome的代理扩展,或者使用selenium-wire等第三方库简化配置。
- Chrome不支持运行中动态切换代理,每次更换代理都需要重新初始化浏览器实例。
内容的提问来源于stack exchange,提问作者MauziiFragt
相关产品推荐
相关产品推荐

