是否有人成功在树莓派上运行Selenium Undetected ChromeDriver?
树莓派设备运行Selenium Undetected ChromeDriver异常解决方案
核心原因
Undetected ChromeDriver(以下简称UC)官方未提供ARM架构适配,公开渠道无通用成功方案属于正常情况:UC内置的驱动patch逻辑、二进制校验规则、特征隐藏逻辑全部基于x86架构Chrome/Chromium开发,树莓派所用的ARM架构系统软件源中,Chromium为发行版方自行编译的定制版本,二进制特征、文件结构和x86版本存在差异,无法被UC正常识别patch。
已验证无效的操作
- 升级/降级系统Chromium版本:无论版本新旧,ARM架构定制编译的Chromium均不符合UC内置的版本匹配规则,无法解决核心适配问题
- 安装不同历史版本UC:所有正式发布的UC版本均未内置ARM架构chromedriver二进制,也未针对ARM平台做hook逻辑适配,更换版本无法解决架构不兼容问题
可行落地方法
方案1:手动修改UC源码适配ARM平台
适合仅需绕过基础Selenium检测的场景,操作步骤如下:
- 清理已安装的冲突组件
pip uninstall undetected-chromedriver -y sudo apt remove chromium-chromedriver -y
- 安装和当前系统Chromium大版本完全一致的原生ARM架构chromedriver,将二进制文件放置到
/usr/bin/chromedriver路径,添加可执行权限 - 重新安装UC后,找到Python环境路径下的
undetected_chromedriver/patcher.py文件,注释掉所有自动下载chromedriver、校验驱动文件哈希的代码逻辑,强制UC调用系统路径下的ARM版chromedriver - 启动时显式指定二进制路径和启动参数,参考代码:
import undetected_chromedriver as uc opts = uc.ChromeOptions() opts.add_argument('--no-sandbox') opts.add_argument('--disable-dev-shm-usage') opts.add_argument('--disable-gpu') opts.binary_location = '/usr/bin/chromium-browser' # version_main参数替换为当前安装的Chromium大版本号,例如118、119 driver = uc.Chrome( driver_executable_path='/usr/bin/chromedriver', options=opts, version_main=119 )
注意:该方案仅能隐藏基础Selenium特征,面对Cloudflare 5秒盾等高等级反爬时识别率较高,无法达到x86平台原生运行UC的绕过效果
方案2:替代方案(稳定性更高)
如果需要稳定绕过强反爬检测,不要在树莓派原生环境硬适配UC,选择以下两种经过验证的路径:
- 换用支持ARM架构的反爬工具:Playwright搭配stealth插件原生支持树莓派ARM架构,安装无需手动修改源码,强反爬绕过率远高于手动patch的UC
- 容器化运行x86版UC:在树莓派上启动轻量x86架构Docker容器,容器内部安装x86版本Chrome和匹配版本的UC,通过端口映射将驱动服务暴露给宿主机调用,运行效果和x86设备原生运行UC完全一致,无适配问题
内容的提问来源于stack exchange,提问作者DankRat42
相关产品推荐
相关产品推荐

