browsery 项目探索:构建 ARM64 Linux 上的浏览器自动化工具
背景
最近在探索浏览器自动化工具的过程中,我们尝试为 ARM64 Linux 环境构建一个类似 agent-browser 的工具(基于 Playwright)。由于项目使用 Selenium + undetected-chromedriver + axe-core,我们将其命名为 browsery。
项目架构
1 | browsery/ |
核心组件:
- Rust CLI - 快速命令行界面
- Python 后端 - Selenium + undetected-chromedriver
- Daemon 模式 - 通过 Unix socket 保持浏览器实例
遇到的挑战
1. 进程隔离问题
CLI 命令每次运行都是独立的进程,无法保持浏览器实例:
1 | $ python -m src.cli open "url" |
解决方案:添加 Daemon 模式,类似 agent-browser,通过 Unix socket 通信。
2. ARM64 Linux 支持问题
在研究 undetected-chromedriver 时,我们发现:
- Chrome for Testing 不提供 Linux ARM64 chromedriver
- 只有 mac-arm64 可用,没有 linux64-arm64
- 官方也没有计划支持
我们 fork 了 undetected-chromedriver 并添加了 ARM64 检测和警告:
1 | arch = platform_module.machine() |
3. 磁盘空间限制
尝试从源码构建 chromedriver 需要:
- Chromium 源码:30-50GB+
- 当前环境可用空间:4GB
无法在当前环境完成构建。
解决方案
- 使用 agent-browser - 基于 Playwright,已支持 ARM64
- 使用 Selenium Grid - 但需要额外的服务器资源
- 等待官方支持 - Chrome for Testing 未来可能添加 ARM64 支持
总结
browsery 项目虽然因为 ARM64 生态限制暂时无法完全替代 agent-browser,但项目架构和 Rust CLI + Python Daemon 的模式为未来的扩展奠定了基础。