自动识别并点击 QQ 群聊中的机器人验证码,基于视觉大模型实现干扰验证码图片的智能识别。
- 自动识别验证码 — 监听群聊消息,自动捕获来自官方机器人的干扰验证码图片
- 视觉大模型驱动 — 调用支持图片理解的 AI 模型(豆包、OpenAI 兼容接口等)识别图中物品
- 智能按钮匹配 — 将模型识别结果与内联键盘选项匹配,模拟物理点击完成验证
- 安全过滤机制 — 仅处理 @ 自身机器人的验证码,避免误点他人验证
- WebUI 配置管理 — 所有配置项均可通过 AstrBot 管理面板可视化编辑,无需修改代码
- 详细调试日志 — 可开关的调试模式,完整记录识别过程和耗时
群聊消息 → 过滤官方机器人 → 匹配验证码关键词 → 确认 @ 自身
→ 提取图片 URL + 解析按钮选项
→ 视觉模型识别图片中的目标物品
→ 匹配正确按钮 → OneBot 协议模拟点击
- 打开 AstrBot WebUI 管理面板
- 进入 插件市场,搜索
astrbot_plugin_captcha - 点击 安装,等待安装完成
将插件克隆到 AstrBot 的插件目录下:
cd AstrBot/data/plugins
git clone https://github.com/cclite123/astrbot_plugin_captcha.git安装 Python 依赖:
pip install -r requirements.txt在 AstrBot WebUI 的插件管理处 重载插件 即可生效。
安装后,在 AstrBot WebUI → 插件 → 验证码克星 中配置以下参数:
| 配置项 | 类型 | 默认值 | 说明 |
|---|---|---|---|
official_bot_id |
string | 3889001741 |
需要自动点击验证码的官方 QQ 机器人 ID |
vision_api_key |
string | (空) | 视觉模型的 API Key,必填 |
vision_base_url |
string | https://ark.cn-beijing.volces.com/api/v3 |
视觉模型 API 地址,支持 OpenAI 兼容接口 |
vision_model |
string | (空) | 视觉模型 ID / Endpoint ID,必填 |
debug_print |
bool | true |
是否在控制台输出详细识别日志 |
stop_after_handle |
bool | true |
处理完毕后是否阻止事件继续传播 |
本插件需要一个支持 视觉理解(Vision) 能力的大模型 API。以下以火山引擎豆包为例:
- 前往 火山引擎控制台 创建应用
- 获取 API Key 并填入
vision_api_key - 创建视觉模型的 Endpoint(如
ep-xxxxx),填入vision_model vision_base_url保持默认即可
也支持其他 OpenAI 兼容接口,只需修改 vision_base_url 和 vision_api_key 即可适配。
| 平台适配器 | 支持状态 |
|---|---|
| aiocqhttp (OneBot v11) | ✅ 支持 |
注意: 按钮点击功能依赖 OneBot 协议的
click_inline_keyboard_button扩展 API,请确保所使用的协议实现支持该接口。
使用 NapCatQQ 时,请在 NapCat WebUI → 网络配置 中,编辑 AstrBot 实际连接的
WebSocket 或反向 WebSocket 配置并开启 debug,然后重启或重载该连接。
NapCat 仅在网络连接的 debug 开启时,才会在 OneBot 上报中附加包含
inlineKeyboardElement 的原始消息。未开启时,标准 OneBot 消息转换会丢弃官方 Bot
的键盘按钮,插件将只能取得验证码文字和图片,无法取得点击所需的 bot_appid、
button_id 与 callback_data。这里的 NapCat 网络 debug 与插件配置中的
debug_print 是两个不同的开关。
- Python >= 3.9
- AstrBot >= 4.0.0
- openai >= 1.0.0(用于调用视觉模型 API)
astrbot_plugin_captcha/
├── main.py # 插件主程序
├── metadata.yaml # 插件元数据
├── _conf_schema.json # 配置项 Schema(WebUI 配置驱动)
├── config.json # 本地配置文件(可选)
├── requirements.txt # Python 依赖声明
├── .gitignore # Git 忽略规则
└── README.md # 项目说明文档
请检查以下几点:
- 插件是否已在 AstrBot WebUI 中成功加载(插件列表中可见)
vision_api_key和vision_model是否已正确配置official_bot_id是否与实际发送验证码的机器人 ID 一致- 开启
debug_print查看控制台日志,确认消息是否被过滤
- 确认 API Key 有效且有足够配额
- 确认模型 ID 支持视觉(图片理解)能力
- 检查网络是否可以访问
vision_base_url指定的 API 地址
- 确认使用的平台适配器支持
click_inline_keyboard_button扩展 API - 检查 AstrBot 日志中是否有
call_action相关错误 - 部分 OneBot 实现可能需要额外配置才能使用扩展 API
插件内置了安全检查机制,只会处理 @ 自身机器人的验证码消息。如果出现误触发,请确认 official_bot_id 配置是否正确。
欢迎提交 Issue 和 Pull Request!
- Fork 本仓库
- 创建你的功能分支:
git checkout -b feature/my-feature - 提交更改:
git commit -m "feat: add my feature" - 推送分支:
git push origin feature/my-feature - 提交 Pull Request
提交代码前请确保:
- 代码经过
ruff格式化 - 功能经过测试验证
- 包含必要的注释说明
本项目基于 MIT License 开源。