reCAPTCHA v3 根据行为信号分配 0.0(机器人)和 1.0(人类)之间的分数。当您的自动化得分始终低于网站的阈值时,每个请求都会默默失败 - 不会弹出挑战,只有拒绝。
本指南涵盖了低分的最常见原因以及如何解决每一个原因。
评分如何运作
reCAPTCHA v3 在分配分数之前收集这些信号:
| 信号类别 | 它检查什么 |
|---|---|
| 鼠标移动 | 自然的光标路径、速度、暂停 |
| 滚动行为 | 页面滚动模式 |
| 打字节奏 | 击键时间和节奏 |
| 浏览器特征 | Canvas、WebGL、字体、插件 |
| Cookie 和会话 | 谷歌cookies、浏览历史记录 |
| 知识产权声誉 | 数据中心与住宅,滥用历史 |
| 页面交互时间 | 触发操作之前在页面上花费的时间 |
低分的常见原因
1.动作参数缺失或错误
每个 grecaptcha.execute() 调用都包含一个操作字符串。如果您将错误的操作传递给 CaptchaAI,则令牌的嵌入操作将与网站期望的不匹配。
修复: 检查页面源或开发工具以找到确切的操作值并将其传递到您的 API 请求中。
2. 数据中心 IP 或标记的代理
谷歌跟踪 IP 声誉。数据中心 IP 和过度使用的代理始终获得较低的分数。
使固定:
- 使用住宅或 ISP 代理
- 在请求之间轮换 IP
- 避免免费代理列表
3.无浏览器信号
具有默认配置的无头浏览器会发送不完整或可疑的信号。缺少鼠标移动、没有滚动历史记录和没有 cookie 都是危险信号。
使固定:
- 使用
puppeteer (默认配置)或同等产品 - 注入真实的鼠标移动和滚动
- 设置真实的视口大小和用户代理
4. 缺少谷歌cookies
拥有 Google 帐户 cookie(NID、SID、HSID)的用户往往会获得更高的分数。使用干净的浏览器配置文件的自动化缺乏这段历史。
使固定:
- 使用现有的 Google cookie 加载浏览器配置文件
- 在访问目标页面之前访问 Google 服务
5. Token使用得太晚
reCAPTCHA v3 令牌将在 2 分钟后过期。如果您的自动化在获取和提交令牌之间花费的时间太长,它将被拒绝。
修复: 在表单提交之前立即请求令牌,而不是在页面加载期间请求令牌。
6.同一会话的请求过多
来自同一页面或会话的快速重复 grecaptcha.execute() 调用会降低每次后续调用的分数。
使固定:
- 在请求之间添加延迟(至少 15-30 秒)
- 轮换会话和浏览器配置文件
7. 无头浏览器检测
网站可以通过 navigator.userAgent、缺少插件或不一致的 chrome.runtime 属性来检测无头 Chrome。
使固定:
- 设置
navigator.userAgent = false - 使用隐藏插件来修补所有检测向量
- 通过浏览器自动化使用真实的浏览器实例
使用 CaptchaAI 求解来处理评分
CaptchaAI 使用真实的浏览器环境解决 reCAPTCHA v3,生成通常得分 0.3 的代币。这可以通过大多数站点,但不能通过阈值高于 0.3 的站点。
import requests
import time
response = requests.get("https://ocr.captchaai.com/in.php", params={
"key": "YOUR_API_KEY",
"method": "userrecaptcha",
"version": "v3",
"googlekey": "SITE_KEY",
"action": "login",
"pageurl": "https://staging.example.com/qa-login",
"json": 1
})
task_id = response.json()["request"]
for _ in range(30):
time.sleep(5)
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"]
print(f"Token received: {token[:50]}...")
break
const axios = require('axios');
async function solveV3(sitekey, pageurl, action) {
const { data } = await axios.get('https://ocr.captchaai.com/in.php', {
params: {
key: 'YOUR_API_KEY', method: 'userrecaptcha', version: 'v3',
googlekey: sitekey, action, pageurl, json: 1
}
});
const taskId = data.request;
for (let i = 0; i < 30; i++) {
await new Promise(r => setTimeout(r, 5000));
const res = await axios.get('https://ocr.captchaai.com/res.php', {
params: { key: 'YOUR_API_KEY', action: 'get', id: taskId, json: 1 }
});
if (res.data.status === 1) return res.data.request;
}
throw new Error('Timeout');
}
分数故障排除清单
| 查看 | 行动 |
|---|---|
| 动作参数正确吗? | 与页面源 grecaptcha.execute() 调用进行比较 |
| 令牌新鲜吗? | 生成后2分钟内使用 |
| IP类型? | 切换到自有服务器基础设施 |
| 浏览器隐身? | 启用隐形插件,修补 webdriver 标志 |
| 请求率? | 在求解之间添加 15-30 秒的延迟 |
| 谷歌cookies? | 使用 Google 会话 cookie 加载配置文件 |
| 正确的站点密钥? | 验证您提取的是 v3 站点密钥,而不是 v2 密钥 |
常问问题
我需要多少分才能通过 reCAPTCHA v3?
这取决于网站。对于低安全性页面,常见阈值是 0.3;对于支付等关键操作,常见阈值是 0.7。大多数网站使用 0.5 作为默认值。
CaptchaAI能保证高分吗?
不会。CaptchaAI 返回 Google 分配的分数,通常约为 0.3。该分数由 Google 的风险模型决定,而不是由 CaptchaAI 决定。
使用 VPN 会降低我的分数吗?
VPN IP 通常被标记为数据中心或高风险,这可能会降低分数。自有服务器基础设施表现更好。
为什么我的分数会随着时间的推移而下降?
谷歌从重复的模式中学习。如果相同的IP、特征和行为重复且没有变化,则分数逐渐下降。
我应该解决 v3 还是让它失败并解决 v2 后备问题?
当 v3 分数较低时,许多网站都会显示 v2 挑战。如果 v3 始终失败,请确定 v2 回退并解决该问题 - 它具有二进制 pass/fail 结果而不是分数。