Damru 安卓原生隐身浏览器自动化框架
在 Docker 中运行真实 Android(Redroid),通过 Playwright 与 CDP 操控 Chrome,零 JS 注入实现 OS 级隐身自动化。
- Star 数
- ★ 342
- 最近更新
- 3 个月前
- License
- NOASSERTION
- 主语言
- Python
- FA 评分
- 42/100 · 缺口较多
30 秒速览
- 运行形态
- 可在哪里用
- 平台专用
- 费用
- 免费,无需付费服务
- 上手难度
- 高 · 需要较重的基础设施
- 开始前需要
- 典型场景
- 需要在大规模抓取中绕过 Cloudflare Turnstile、DataDome 等 WAF 的数据团队,用真实 Android 指纹降低封禁率。
- 不适合
- 需要在原生 Windows Docker 上运行的团队
- 使用 Debian 或其他未支持 Linux 发行版的部署环境
- 希望驱动真实物理手机的用户
- 源码审查
- 42/100 · 缺口较多
这个 Agent 能做什么,适合哪些场景?
Damru 是面向 Android 的开源隐身浏览器自动化框架,核心思路是不在网页里注入任何 JavaScript,而是在 Docker 中启动完整 Android 系统(Redroid),再用 Playwright 经 Chrome DevTools Protocol 驱动 Chrome。它通过 resetprop 修改系统属性、patch Vulkan/GLES 驱动 .so、用 libfakemem.so 拦截 sysinfo 系统调用、调整 wm size/density 与 iptables 规则,在 OS、二进制和 CDP 协议层伪造设备指纹。框架内置 155 个真实 Android 设备档案、Chrome/WebView 版本轮换与约 184 种 TLS/JA3 指纹随机化,并提供 AsyncDamru、Damru、DamruPool 等 Python 接口以及 python -m damru 命令行。运行环境依赖 Ubuntu 24.04 或带专用内核的 WSL2、Docker 和 binderfs 内核支持,官方明确不支持物理手机,项目本身仍处于 Beta 阶段。
运行时 Damru 先通过 ADB 连接到 Redroid 容器,根据选定设备档案执行 resetprop 修改 ro.product.model、ro.build.fingerprint 等系统属性,并用 wm size/wm density 设定屏幕尺寸与 DPI。随后它 patch Vulkan/GLES 驱动二进制以伪装 GPU、通过 LD_PRELOAD 加载 libfakemem.so 拦截 sysinfo/sysconf 伪造内存与 CPU、用 iptables 屏蔽 WebRTC 内网 IP 泄漏与 IPv6,并借助 CDP 的 Emulation.setHardwareConcurrencyOverride 与 Target.setAutoAttach 把硬件覆盖下发到主线程和各类 Worker。Chrome 侧会改写 Preferences 与启动参数、随机化 TLS 密码套件、禁用 DoH 以走代理 DNS,并可按代理出口自动匹配时区与 locale。最终对外暴露 AsyncDamru/Damru 的 new_page 等 Playwright 风格页面对象,以及 python -m damru 的 setup、check preflight、force-profile、stealth-open-url、benchmark、screenshot、record、ui 等命令。
- 需要在大规模抓取中绕过 Cloudflare Turnstile、DataDome 等 WAF 的数据团队,用真实 Android 指纹降低封禁率。
- 做反爬与指纹识别研究的工程师,用 155 个设备档案和可切换的 TLS/JA3 配置对照测试检测逻辑。
- 要在真实 Android 环境而非桌面模拟器上做移动端 QA 的测试团队,通过 Playwright API 编写端到端脚本。
- 需要并发多个独立 Android 身份的自动化团队,用 DamruPool 在两到三台容器间编排任务。
- 希望用图形界面观察或手动操作浏览器的研究者,通过 python -m damru ui 或 scrcpy 查看工作进程。
如何安装或部署这个 Agent?
先准备 Ubuntu 24.04 主机(或启用 Damru 捆绑内核的 WSL2),安装 ADB 与 Python 虚拟环境,再用 pip 从 Git 安装并执行初始化命令:
sudo apt update && sudo apt upgrade -y
sudo apt install adb wget curl git jq python3-venv -y
python3 -m venv .venv
source .venv/bin/activate
python -m pip install -U pip setuptools wheel
pip install git+https://github.com/akwin1234/damru.git接着安装依赖与预烘焙 Redroid 镜像,并做环境自检:
python -m damru install-deps -y
python -m damru install-image
python -m damru check-env镜像默认从 https://dl.damru.dev/assets/damru-baked.tar.gz 获取;若本机没有本地 tarball,可改用 python -m damru install-image --download。只有需要自行烘焙 raw Redroid 时才需要另外下载约 3.3 GB 的 chrome-apks.zip(python -m damru install-apks --download)。
如何使用这个 Agent?
最小可运行脚本通过 AsyncDamru 打开页面:
from damru import AsyncDamru
async def main():
async with AsyncDamru(chrome_apk="/home/damru/chrome-apks/145.0.7632.75") as browser:
page = await browser.new_page()
await page.goto("https://example.com")
if __name__ == "__main__":
import asyncio
asyncio.run(main())命令行侧先做只读预检,再启动工作进程或用 stealth 方式打开 URL:
python -m damru check preflight --json
python -m damru force-profile --serial 127.0.0.1:5600 --device pixel_8_pro
python -m damru stealth-open-url --serial 127.0.0.1:5600 --url https://example.com
python -m damru ui代理、时区、locale 在 damru/config.py 中配置;未设置 TIMEZONE/LOCALE 时会根据代理出口自动推断。
这个 Agent 有哪些优点和局限?
- 零 JS 注入:在 OS 属性、GPU 二进制、syscall 与 CDP 层完成伪装,页面内不留下 Object.defineProperty 痕迹。
- 内置 155 个真实 Android 设备档案,默认随机只从 51 个已验证加 49 个高置信档案中选取,可控地平衡真实度与多样性。
- 提供预烘焙 Docker 镜像与 install-image/install-deps 自动化,避免每次运行都重新编译原生库和安装 Chrome。
- 同时提供 Python 库(AsyncDamru/Damru/DamruPool)与较完整的 CLI(preflight、force-profile、benchmark、screenshot、record),便于脚本化与排障。
- README 给出可复现的基准证据:第三方 browsers-benchmark 10/10 绕过目标、各类站点截图与 CreepJS 结果。
- 宿主平台限制严格:官方仅支持 Ubuntu 24.04 原生或带捆绑内核的 WSL2,且需要内核开启 CONFIG_ANDROID_BINDERFS,Debian 13 VPS 实测失败。
- 资源开销大:每个 Redroid worker 默认 2 vCPU/2GB,单 worker 推荐 8GB 内存,烘焙镜像还需约 35GB 临时磁盘。
- 项目自述为 Beta,官方声明依赖宿主内核、Docker、ADB 与 Redroid 行为,多容器稳定性仍可能因环境而异。
- 明确不支持物理 Android 手机,MuMu Player 路径被标注为未完成/不可用,选择空间有限。
- 许可证为 PolyForm Noncommercial 1.0.0,商业使用需自行确认授权,GitHub 元数据显示为 NOASSERTION。
这个 Agent 与同类方案有什么区别?
README 明确将 undetected-chromedriver 作为最接近的替代品:后者在 x86 上 patch 桌面 Chrome 二进制,而 Damru 在 Docker 里运行完整 Android 系统并在 OS、二进制与 CDP 层伪装,能覆盖 GPU、TLS/JA3、设备属性与网络信号。它也对比了 puppeteer-stealth 类 JavaScript 注入方案,指出这类方案会被 .toString() 与原型链检查识别;此外提到 Camoufox 与 Fingerprinting Chromium 迁移到移动端后稳定性不足。
与相关度最高的同类 agent 并排比较关键指标。
| Agent | 源码审查 | 形态 / 费用 | Star | 最近更新 | 主语言 | 完整支持的平台 |
|---|---|---|---|---|---|---|
| Damru 安卓原生隐身浏览器自动化框架 当前 | 42 · 缺口较多 | 命令行工具免费 | ★ 342 | 3 个月前 | Python | — |
| Lightpanda 浏览器 | 66 · 存在缺口 | 命令行工具免费 | ★ 37k | 1 天前 | Zig | OpenAI API · Claude API |
| 隐身浏览器代理 | 57 · 缺口较多 | MCP 服务器免费 + 模型费 | ★ 876 | 1 天前 | Python | Codex · Claude Code |
| CloakBrowser 隐形浏览器 | 50 · 缺口较多 | 代码库 / SDK免费版 + 付费版 | ★ 32k | 2 天前 | Python | — |
FollowAgents 如何评估这个 Agent?
查看各维度的扣分理由
README 明确说明需要 root 权限、修改 build.prop、iptables、LD_PRELOAD 注入和二进制补丁,属于高权限操作,但未提供权限最小化设计或用户确认流程;数据流(代理、ADB、CDP)有描述但缺乏透明日志或敏感数据处理说明;依赖版本有范围但无安全审计;回滚机制未提及;来源归属在 LICENSE 和 README 中有明确声明,故 source_attribution 得 2 分,其余多为 1 分。
README 自述 Beta 状态,依赖宿主内核、Docker、ADB、Redroid 行为,存在环境脆弱性;依赖版本范围较宽(playwright>=1.40,<1.60),未锁定具体版本;失败消息在测试脚本中有重试和错误打印,但框架层面缺乏系统性错误处理说明,故各项均为 1 分。
README 清晰界定目标受众(开发者、安全研究者)和场景(爬虫、QA、反检测研究),并明确不支持物理设备、MuMu 为实验性,边界清晰;但触发精度(如自动选择设备、代理配置)依赖隐式行为,文档未详述,故 trigger_precision 得 1 分。
README 结构完整,包含安装步骤、快速开始、FAQ、已知限制(Beta、物理设备警告)、许可证(PolyForm Noncommercial 1.0.0)明确;但版本号仅 0.1.0,CHANGELOG 链接存在但内容未提供,命名稳定性(如 CLI 命令)未承诺,维护责任指向个人邮箱,故部分项得 1 分。
项目声称可绕过多种反爬系统,但证据仅为 README 中的截图和自述,缺乏可复现的基准测试结果或独立验证;输出可用性依赖环境配置,成本(Docker、Redroid、代理)较高,边际价值相对于现有工具(如 undetected-chromedriver)未充分证明,故各项均为 1 分。
README 中的性能声明(如 100% 绕过率、CreepJS 85%+)缺乏可追溯的原始数据或第三方复现;测试脚本存在但未提供运行结果;事实与推断混合(如“世界首个”等营销语言),故各项均为 1 分。
- 项目需要 root 权限并修改系统级配置(build.prop、iptables、LD_PRELOAD),可能对宿主环境造成不可逆影响,建议在隔离环境中使用。
- README 中的性能声明(如 100% 绕过率)缺乏可复现的原始数据或第三方验证,应谨慎对待。
- 依赖版本范围较宽,未锁定具体版本,可能引入不兼容或安全风险。
- 项目明确不支持物理设备,但测试脚本中包含物理设备序列号,存在误用风险。
- 许可证为 PolyForm Noncommercial 1.0.0,商业使用需单独授权,请遵守许可条款。