Skip to content

Latest commit

 

History

14 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CaptchaMesh 图标

CaptchaMesh

电脑 Agent 碰到 CAPTCHA 时,把挑战安全地转给你自己的手机。

CI Release Python Android License

CaptchaMesh 是一个开源的人工接管工具,给个人、低频的使用场景用。电脑端保留原来的浏览器会话, 把挑战端到端加密后交给 Android;你在手机上手动完成,结果回到原任务,Agent 接着跑。

界面预览

手动验证控制台 连接自检 脱敏运行记录

工作原理

flowchart LR
    A[模式一:电脑 Agent] -->|2Captcha API| B[127.0.0.1 本地桥]
    P[模式二:手机点工作流] -->|固定白名单 ID| N[电脑 Node Agent]
    N --> A
    B -->|端到端密文| H[不可信 Hub]
    H -->|密文| P
    P --> U[用户手动完成]
    U -->|加密结果| H --> B --> A
Loading

两种使用方式

模式 谁先启动 是否需要手机点工作流 用途
Agent API(默认) 电脑 Agent 已有 Agent 遇到 CAPTCHA 后自动通知手机
手机工作流(可选) 手机用户 从手机启动电脑预先登记的固定脚本,再等待它提交 CAPTCHA

默认模式跑一下 captchamesh start,扫码配对一次就好。Agent 那边调用 http://127.0.0.1:8893 之后,任务会自动到手机上;不用先打开手机的“工作流”页,也不需要活动 run。

只有想“从手机启动电脑脚本”时,才需要配 registrations.jsonnode_agent.py。脚本里照常写 你自己的业务逻辑;CaptchaMesh 仍然只管启动、状态和人工 CAPTCHA 回传。

快速上手:Agent API 模式

1. 安装 Android App

Releases 下载最新 APK,系统要求 Android 10(API 29)以上。首次启动记得允许通知和前台服务权限。 “设置 → 任务提醒”管着两种模式下的 CAPTCHA 到达弹窗;系统声音、震动和通知渠道也从这一页 进 Android 设置改。

0.18.x 测试版升到 0.19.0 要先卸掉旧的 debug 签名 APK,装上正式 APK 后重新扫码配对。 签名只迁移这一次:0.19.0 起用固定发布证书,之后直接覆盖安装即可。

2. 安装电脑端

电脑端目前只在 Linux 上正式支持,要求 Python 3.11+:

git clone https://github.com/vimalinx/CaptchaMesh.git
cd CaptchaMesh
./install.sh
captchamesh start

./install.sh 会把电脑端 CLI 和 captchamesh-adapter Agent Skill 一起装好。Skill 默认装在 ${CODEX_HOME:-~/.codex}/skills/captchamesh-adapter,想确认随时可以看:

captchamesh skill status

装完之后可以这样确认 Skill 文件确实进了 Codex 的全局目录:

captchamesh skill status
test -f "${CODEX_HOME:-$HOME/.codex}/skills/captchamesh-adapter/SKILL.md" \
  && echo "CaptchaMesh Skill ready"

然后开一个新的 Codex 会话,在要接入 CaptchaMesh 的项目目录里输入:

$captchamesh-adapter 检查当前项目的 2captcha-python 接入,使用 Agent API 模式,
把 endpoint 改到本机 CaptchaMesh 并验证,但不要读取或输出真实密钥。

Skill 是全局安装的,但只处理当前会话里你明确指定的项目和任务;不会自动上传到 OpenAI 云端,不会绕过项目授权,也不会在后台跑 CAPTCHA 任务。

也可以在任意项目目录里直接跑安装包自带的检查器,项目里不需要有 .skill/ 目录:

captchamesh skill inspect . --mode agent-api --json

重复跑安装器没问题:没动过的 Skill 会正常更新;一旦发现你自己改过 Skill,或者目标目录 不归 CaptchaMesh 管,它会停下来保留原样,不做静默覆盖。从 wheel 安装的用户可以执行 captchamesh skill install 来做这一步。

程序只监听 127.0.0.1:8893。在交互终端里打开打印出来的配对地址,用 App 扫码即可。 服务管理器这类非交互环境不会把配对令牌写进日志,而是给出一个权限 0600 的本机文件路径。

3. 连接 Agent

已经在用 2captcha-python 的代码不用改调用方式,换个导入就行:

from captchamesh import TwoCaptcha

solver = TwoCaptcha()
result = solver.turnstile(
    sitekey="PUBLIC_SITE_KEY",
    url="https://example.com/",
)

其他 2Captcha v1/v2 客户端把 API 地址改成 http://127.0.0.1:8893 就行。 captchamesh config --json 默认只返回 API 地址和受限 Key 文件路径,不显示 Key。

配对、连接或任务出错时,可以看脱敏诊断:

captchamesh logs
captchamesh logs --clear

诊断文件在 CaptchaMesh 本机状态目录里,权限 0600,上限 256 KiB;只记固定事件、异常类型和 代码位置。异常消息、Key、Token、Cookie、网址、任务内容一概不进。

详细接入方法见 电脑端本地桥2Captcha API 兼容说明

能处理什么

类型 手机交互 说明
图片文字 原生输入 支持文本、数字和常用约束
坐标点击 原生画布 返回一个或多个点击坐标
图片网格 原生网格 返回选中的图片序号
旋转题 原生旋钮 返回角度
Turnstile / hCaptcha / reCAPTCHA 挑战组件 保留同一任务所需上下文
FunCaptcha / GeeTest 挑战组件 支持对应 v2 任务映射
DataDome 挑战组件 要求匹配的代理和 User-Agent
Amazon WAF 挑战组件 支持 jsapiScript 或双脚本模式

任务的上下文可以带上同一次操作需要的 Cookie、User-Agent、请求头、localStorage 和无鉴权 HTTP(S) 代理。字段定义、结果格式和明确不支持的部分见 兼容能力矩阵

为什么需要电脑端

CAPTCHA token 通常绑着浏览器状态、网络出口和短期上下文,所以中间要有电脑端桥,它负责:

  • 不动 Agent 原来的浏览器和业务流程;
  • 任务格式转换和端到端加密都在本机完成;
  • 提供常用的 2Captcha API v1/v2 兼容端点;
  • 同时接多个 Agent 任务并持久跟踪,手机任务列表里直接点选切换;切回原生图片任务时,已输入的答案、坐标、格子或角度都还在,回传按 taskId 隔离;
  • 结果只在本机数据库里短期保存,权限 0600

Hub 只转发密文和必要的路由元数据;配对密钥只存在电脑和 Android Keystore 里。

网页挑战共用 Android WebView 的 Cookie 和代理环境,一次只能开一个;处理网页挑战期间,仍可切去看已经打开的原生图片任务。

完整测试

先备好 Python 3.11+、JDK 17 和 Android SDK 35,然后运行:

python3 -m venv .venv
.venv/bin/python -m pip install -r requirements.txt build bandit pip-audit
./tools/test_all.sh

如果装了 Gitleaks,还可以再跑完整安全门:

./tools/test_all.sh --security

脚本会依次验证 Python 协议与安全回归、发布包边界、安装后的命令行、依赖漏洞、Android 单测/Lint/APK 构建,外加可选的 Git 历史密钥扫描。人工端到端、无线 ADB、通知和 Hub 部署 测试在完整测试指南

每次 push 和 pull request,GitHub Actions 也会把 Python 3.11、Python 3.14 和 Android 各测一遍。

自己构建 Android App

cd app-src
./gradlew --no-daemon :app:testDebugUnitTest :app:lintDebug :app:assembleDebug
adb install -r app/build/outputs/apk/debug/app-debug.apk

开发时可以走 USB 或无线 ADB:

adb reverse tcp:8890 tcp:8890

日常使用用不上 ADB,推荐电脑端生成的一次性二维码,详见 Android 安装与连接

碰到崩溃、后台断连或任务失败,打开 App 的“记录”页点“复制诊断”。复制出来的只有 版本、异常类型和 CaptchaMesh 自己的栈帧,可以直接贴到私有 Issue;Key、Token、 Cookie、网址和任务内容都不在里面。完整排查步骤见Android 安装与连接

可选:手机工作流模式

cp registrations.example.json registrations.json

在本机 registrations.json 里登记固定的 cwd 和命令数组;这个文件不进 Git,手机那边也只能 选到登记过的 idnode_agent.py 跑起来之后,手机“工作流”页可以启动、查看、停止这些脚本。 脚本碰到 CAPTCHA 时,走的还是同一个手机人工验证界面。接入方式见 两种模式与工作流接入,协议和失败语义在 工作流节点协议

平台支持

组件 状态 最低环境
Android App 支持 Android 10 / API 29
Linux 电脑端 支持 Python 3.11+
Linux Hub 支持 Ubuntu、systemd、HTTPS 隧道
macOS 电脑端 实验性 Python 3.11+,尚未纳入 CI
Windows / WSL 未验证 原生 Windows 暂不支持
iOS 不支持 暂无客户端

自托管 Hub

Hub 只应该监听 127.0.0.1,对外走 HTTPS 反向隧道;别把 8890 直接暴露到公网。 从 Releases 下载独立 Hub 包,在 Ubuntu 或 Debian 服务器上跑下面这一条命令,安装器会问你要域名和 Cloudflare Tunnel token:

sudo ./deploy/hub/install.sh --domain mesh.example.com

依赖安装、隔离账户、生成 Key、systemd 服务和 /healthz 检查都是它自己来;再跑一遍就是 保留数据的升级。完整步骤、非交互安装和加密备份见 Hub 部署说明。 公益 Hub 解不了任务正文,但邮箱 ID、方向、时间、密文大小这些路由元数据它看得到。

安全与隐私

  • 配对能力令牌放在 URL fragment 里,不进 HTTP 请求路径,页面加载完就从地址栏清除。
  • 本机状态目录 0700,密钥、数据库和非交互配对文件 0600
  • 密钥文件拒绝符号链接、硬链接和其他非普通文件。
  • 通知、普通日志、脱敏诊断和默认配置输出里没有 Key、Cookie、挑战正文或答案。
  • 回调、SOCKS、带认证代理和任意远程命令,默认一律拒绝。
  • 发布前 CI 会检查 wheel/sdist,见到本机文件、私有标记或异常归档成员直接判失败。

安全问题请通过 SECURITY.md 私下报告。CaptchaMesh 只该用在你有权运行的个人 工作流上,并且遵守目标服务的条款和适用法律。

文档

文档 内容
完整测试指南 自动、人工、Android、Hub 和发布验收
电脑端本地桥 安装、配对、Agent 接入和生命周期
Android 安装与连接 APK、通知、二维码和 ADB
端到端加密中继 信任模型、密钥和 Hub 可见信息
挑战协议 v3 任务字段和类型化结果
2Captcha 兼容层 v1/v2 端点与题型矩阵
两种模式与工作流接入 默认 Agent API 与可选手机工作流的选择和接入
工作流节点协议 本机白名单工作流

社区与交流

Linux.do:新的理想型社区

有接入经验、兼容性反馈或使用建议,欢迎到 Linux.do 上聊。 也谢谢 Linux.do 给独立开发者和开源项目提供交流的地方。

项目结构

路径 内容
app-src/ Android App 源码
captchamesh_cli.py / local_bridge.py 电脑端命令行和本机桥
broker.py / broker_asgi.py Hub 与路由
relay_protocol.py 端到端加密信封协议
challenge_protocol.py 挑战与结果协议
twocaptcha_compat.py 2Captcha API v1/v2 翻译层
node_agent.py 可选的白名单工作流节点
.skill/captchamesh-adapter/ Agent 接入 Skill
deploy/hub/ 自托管 Hub 配置

想参与的话,贡献指南社区行为准则支持说明都在这。当前版本 0.19.8MIT License

About

Personal, endpoint-encrypted CAPTCHA handoff between an Agent and Android

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

12 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages