装个浏览器插件就能自动识别验证码,为什么还要写代码接 API?插件适合“少量、手动、临时”场景,API 适合“批量、服务器端、长期跑”场景——背后是同一套 CaptchaAI 识别能力,区别只在谁触发识别、能不能脱离浏览器、能扩多大规模。下面先给速查表,再拆解原理、场景、性能与稳定性,最后附混合方案代码。
一张表看懂核心差异
| 特征 | 浏览器扩展 | API 求解器 |
|---|---|---|
| 安装方式 | 安装扩展,填入 API Key | 通过 HTTP 调用集成到代码里 |
| 是否需要浏览器 | 需要 | 不需要(除非要把 token 写回页面) |
| 并发扩展性 | 低——一个浏览器实例只能处理一个任务 | 高——可无限并行发起请求 |
| 识别速度 | 快(自动检测 + 自动提交) | 视验证码类型而定(约 5–30 秒) |
| 可控性 | 有限 | 完全可编程控制 |
| 无头(headless)支持 | 有限 | 完整支持 |
| 服务器端可用 | 不可用 | 可用 |
| 计费方式 | 线程制计费,与 API 共用同一套额度 | 线程制计费,与扩展共用同一套额度 |
| 可用语言 | 仅浏览器端(JavaScript) | 任意语言 |
两种方案分别怎么工作
浏览器扩展
浏览器扩展监听页面加载,识别已知验证码控件(reCAPTCHA、Turnstile、图片验证码等),检测到后自动提取参数、提交识别、把 token 写回页面。
| 优点 | 缺点 |
|---|---|
| 零代码,装好就用 | 必须有浏览器在运行(可见或无头) |
| 自动检测并把 token 写回页面 | 一个实例同一时间只处理一个任务,规模化要开很多实例,成本高 |
| 更接近真实用户操作 | 可能被反机器人系统识别出扩展特征 |
| 能应对 JavaScript 重度页面 | 没浏览器的服务器上用不了;错误处理简陋;扩展一更新流程可能直接失效 |
API 求解器
直接向识别接口发 HTTP 请求:提交参数(sitekey、pageurl、图片数据等),轮询结果,把 token 用到业务逻辑里——全程不需要浏览器。
| 优点 | 缺点 |
|---|---|
| 完全可编程控制,支持任意语言(Python、Node.js、PHP、Go 等) | 需要自己写代码集成 |
| 可扩展到数千个并发任务 | token 回写页面要自己处理 |
| 服务器、容器、Serverless 都能跑 | sitekey 等参数得自己提取 |
| 错误处理、重试、监控自己定义;不存在“扩展被识别”这类风险 | — |
该选扩展还是 API:看你的场景
适合用浏览器扩展
- 偶尔手动浏览遇到验证码——方便,不用写代码
- 快速验证想法——接 API 之前先跑通流程
- 单浏览器、低频任务——填表单、少量注册账号
- 不写代码的用户——不需要编程基础
适合用 API
- 大规模数据采集——并行识别,无浏览器开销
- 服务器端自动化——没有浏览器可用
- CI/CD 测试流程——运行在无头环境
- 微服务架构——任何服务都能发 HTTP 请求
- 多验证码类型处理——自己写逻辑判断类型、路由
- 自定义重试/错误处理——故障恢复完全由你控制
- 控制成本——统计用量、能缓存就缓存
性能与稳定性:规模上去之后谁更扛得住
并发扩展性:从 1 个到 1000+
| 指标 | 浏览器扩展 | API |
|---|---|---|
| 1 个验证码 | 速度相近 | 速度相近 |
| 10 个并发 | 需要 10 个浏览器实例 | 10 个并行 HTTP 请求 |
| 100 个并发 | 基本不现实 | 常规工作量 |
| 1,000+ 并发 | 不可行 | 队列 + worker 即可 |
| 单实例内存占用 | 200–500 MB(Chrome) | 约 10 MB(HTTP 客户端) |
| 单实例 CPU 占用 | 高(要渲染浏览器) | 低(只发 HTTP 请求) |
出问题了谁更好排查
| 维度 | 浏览器扩展 | API |
|---|---|---|
| 验证码检测 | 自动(可能漏掉自定义验证码) | 手动,检测逻辑你自己写 |
| 错误处理 | 扩展层面,能力有限 | 你的代码全权处理 |
| 升级兼容 | 扩展更新可能破坏现有流程 | 走版本化,向后兼容 |
| 浏览器崩溃 | 会话直接丢失 | 没有浏览器就没有崩溃风险 |
| 反机器人识别 | 可能暴露扩展特征 | 没有扩展特征可被识别 |
国内团队的真实选择:GeeTest(极验)+ reCAPTCHA 混合场景
做跨境电商自动化的国内团队,常同时碰到两类验证码:国内表单多是 GeeTest(极验),海外落地页更常见 reCAPTCHA。reCAPTCHA 脚本托管在 Google 服务器上,境内访问有时不稳定,插件触发会变慢。常见做法:国内低频操作用扩展处理,海外批量抓取全切到 API,直接提交 sitekey、pageurl,不依赖脚本能否加载。CaptchaAI 目前支持 GeeTest v3,v4 尚未开放。
混合方案:浏览器负责导航,API 负责识别
复杂网站可以两者结合:用浏览器做页面导航,用 API 做验证码识别。国内环境下,pip install -i https://pypi.tuna.tsinghua.edu.cn/simple selenium requests 走镜像会快不少。
from selenium import webdriver
import requests
import time
driver = webdriver.Chrome()
driver.get("https://staging.example.com/qa-login")
# Detect CAPTCHA
sitekey = driver.find_element("css selector", "[data-sitekey]").get_attribute("data-sitekey")
# Solve via API (not extension)
submit = requests.post("https://ocr.captchaai.com/in.php", data={
"key": "YOUR_API_KEY",
"method": "userrecaptcha",
"googlekey": sitekey,
"pageurl": driver.current_url,
"json": 1
}).json()
task_id = submit["request"]
time.sleep(15)
for _ in range(24):
result = requests.get("https://ocr.captchaai.com/res.php", params={
"key": "YOUR_API_KEY", "action": "get", "id": task_id, "json": 1
}).json()
if result.get("status") == 1:
token = result["request"]
# Inject token via JavaScript
driver.execute_script(
f'document.getElementById("g-recaptcha-response").value = "{token}";'
)
driver.find_element("css selector", "form").submit()
break
time.sleep(5)
这样既保留浏览器渲染能力,应付 JavaScript 重度站点,识别环节又完全走 API,可控性和并发能力更强。
常见问题
国内环境访问 reCAPTCHA 插件会不会不稳定?
会。reCAPTCHA 脚本托管在 Google 服务器上,境内访问有时不够稳定,插件要等脚本加载完才能触发识别,加载慢就可能超时。目标站点面向海外用户时,更稳妥的做法是用 API 直接提交 sitekey 和 pageurl,不依赖页面脚本能否顺利加载。
识别 GeeTest 验证码该用扩展还是 API?
两种都可以,API 更适合批量场景。CaptchaAI 支持 GeeTest v3,扩展和 API 走同一套识别流程,区别只在要不要为每个任务开浏览器实例。偶尔手动测试用扩展更快;接自动化或跑量,直接用 API 更省资源。
扩展和 API 的计费方式一样吗?
一样。CaptchaAI 按线程计费,同一线程配额内,请求来自扩展还是 API 都不额外收费,费用只取决于套餐,比如 BASIC($15/月,5 线程)。
无头 Chrome(headless)环境下插件还能正常工作吗?
技术上能装,但稳定性有限。Headless Chrome 能加载扩展,但部分网站会识别 headless 特征并改变验证码策略,导致插件识别变得不稳定。自动化流程本就跑在无头环境(比如 CI/CD)的话,直接用 API 提交参数更可靠。
GeeTest v4 现在能用 CaptchaAI 识别吗?
暂不支持,只支持 GeeTest v3。v4 即将支持,正式开放前不要在生产环境假设可用——扩展和 API 都一样。
获取 CaptchaAI API Key
在 CaptchaAI 官网 注册账号,几分钟拿到 API Key,接入自己的脚本。
相关指南
- CaptchaAI 快速上手指南
- 用 API 识别 reCAPTCHA v2 的完整流程
- undetected-chromedriver 配置指南
- Headless 与 Headed Chrome 该怎么选