使用undetected_chromedriver时出现HTTPConnectionPool读取超时错误的原因咨询
使用undetected_chromedriver时出现HTTPConnectionPool读取超时错误的原因咨询
首先还原你的问题场景:
我目前正在用Python编写一个使用undetected_chromedriver库的网络机器人:
from selenium.webdriver.chrome.options import Options import undetected_chromedriver driver_options = Options() driver_options.add_argument('--disable-gpu') driver = undetected_chromedriver.Chrome(use_subprocess=True, user_multi_procs=True, headless=False, options=driver_options)但是,这个网络机器人运行一段时间后,我收到了以下错误:
HTTPConnectionPool(host='localhost', port=#####): Read timed out. (read timeout=120)HTTPConnectionPool(host='localhost', port=51220): Read timed out. (read timeout=120)这个错误的原因是什么?
嘿,针对这个超时问题,我整理了几个最可能的原因,你可以对照自己的场景排查:
- Chrome进程僵死或资源过载:undetected_chromedriver本质还是基于Selenium+ChromeDriver的,长时间运行后,Chrome可能因为内存泄漏、打开过多未关闭的标签页、加载复杂页面导致资源耗尽,进程变得无响应,没办法及时处理Selenium的指令,最终触发120秒的读取超时。
- 目标网站的反爬限制:如果你的机器人持续高频请求目标网站,对方的反爬系统可能会限制你的连接速度、临时阻断请求,或者页面故意加载缓慢,导致Selenium等待响应的时间超过了默认的120秒阈值。
- 多进程配置的潜在问题:你代码里写的
user_multi_procs=True应该是use_multi_procs=True的笔误吧?开启多进程模式后,如果进程管理不当,主进程和Chrome子进程之间的通信可能会出现异常,比如子进程意外退出但主进程还在等待响应,就会触发超时。 - 版本兼容性不匹配:如果你的Chrome浏览器版本、undetected_chromedriver版本、Selenium版本三者不兼容,比如浏览器自动更新后驱动没同步升级,就容易出现通信不稳定的情况,进而引发这类超时错误。
给你几个小建议:可以尝试定期重启Chrome进程来释放资源,增加日志监控浏览器的运行状态,或者调整Selenium的超时时间(不过不建议调太长,最好从根源解决)。
备注:内容来源于stack exchange,提问作者Zak Virgo
相关产品推荐
相关产品推荐

