故障排查

为什么 reCAPTCHA v3 返回低分

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(NIDSIDHSID)的用户往往会获得更高的分数。使用干净的浏览器配置文件的自动化缺乏这段历史。

使固定:

  • 使用现有的 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 结果而不是分数。


相关指南

该文章已禁用评论。