使用Selenium访问pole-emploi招聘页触发WebDriverException错误
错误原因
你收到的net::ERR_CONNECTION_RESET报错,是目标网站主动断开了和你的爬虫的连接。该网站部署了专门的反爬机制,能够识别出Selenium无头浏览器的特征,而你测试的其他站点没有相关拦截规则,所以可以正常访问。
修复步骤
- 首先测试关闭无头模式是否能正常访问,确认是无头模式被识别的问题:
注释掉options.add_argument('--headless')这行代码,运行后看Chrome窗口能否正常打开目标页面。 - 如果确认是无头模式的问题,更换为Chrome新版无头模式参数,识别难度更低:
# 替换原来的--headless参数 options.add_argument('--headless=new') - 添加浏览器指纹伪装配置,清除Selenium的自动化标识:
# 替换为和你Chrome版本匹配的真实user-agent options.add_argument('user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 13_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36') # 禁用浏览器的自动化控制标识 options.add_argument('--disable-blink-features=AutomationControlled') options.add_experimental_option('excludeSwitches', ['enable-automation']) options.add_experimental_option('useAutomationExtension', False) - 初始化浏览器后注入脚本,抹除navigator.webdriver标识:
wd = webdriver.Chrome('chromedriver', options=options) wd.execute_cdp_cmd('Page.addScriptToEvaluateOnNewDocument', { "source": "Object.defineProperty(navigator, 'webdriver', {get: () => undefined})" }) wd.get(site)
其他排查方向
如果以上修改后依然报错,可检查你当前的网络环境是否能正常在浏览器中打开该网站,或者尝试给请求增加随机延迟,避免短时间多次访问触发IP封禁规则。
内容的提问来源于stack exchange,提问作者user11278201
相关产品推荐
相关产品推荐

