undetected_chromedriver无法使用Remote浏览器,求browserless.io适配方案
适配undetected_chromedriver与browserless.io Remote模式的解决方案

针对你遇到的undetected_chromedriver(UC)不支持Remote模式、无法适配browserless.io的问题,分享几个实测有效的解决方案:
直接利用browserless的原生反爬配置
browserless本身支持自定义Chrome启动参数,无需依赖UC就能实现反爬绕过。你可以通过环境变量或配置文件添加以下关键参数:--disable-blink-features=AutomationControlled --disable-dev-shm-usage --no-sandbox --user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"这些参数会隐藏浏览器的自动化特征,模拟正常用户的浏览环境,多数场景下能达到和UC一致的效果。
修改UC源码适配Remote连接
UC默认确实没有Remote支持,但可以手动修改源码实现:- 找到UC安装目录下的
__init__.py文件,定位到Chrome类的初始化方法 - 添加
command_executor参数,并传递给父类webdriver.Chrome - 注释掉UC中自动启动本地Chrome的代码,保留核心反爬补丁逻辑
示例修改后的代码片段:
class Chrome(webdriver.Chrome): def __init__(self, command_executor='http://127.0.0.1:4444/wd/hub', options=None, **kwargs): # 注释原本地启动相关代码 # self.binary_location = self._get_binary_location() # self.service = Service(executable_path=self._get_driver_path()) super().__init__(command_executor=command_executor, options=options, **kwargs) self._patch_executor() # 保留UC的反爬补丁修改后即可像普通Remote WebDriver一样连接browserless服务。
- 找到UC安装目录下的
替代方案:使用Selenium Wire配合browserless
如果不想修改UC源码,可以用Selenium Wire替代,它原生支持Remote模式,同时能通过配置请求头、拦截请求等方式绕过反爬:from seleniumwire import webdriver chrome_options = webdriver.ChromeOptions() # 可添加browserless所需的额外配置 chrome_options.add_argument('--disable-blink-features=AutomationControlled') driver = webdriver.Remote( command_executor='https://<你的browserless服务地址>/wd/hub', options=chrome_options ) # 自定义请求头 driver.header_overrides = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36', 'Accept-Language': 'zh-CN,zh;q=0.9' }
内容的提问来源于stack exchange,提问作者BAD3VA
相关产品推荐
相关产品推荐

