API 教程

reCAPTCHA v3 操作参数解释

action 参数是一个字符串标签,告诉 Google 用户正在做什么 - logincheckouthomepagesubmit_form。它是 reCAPTCHA v3 求解所必需的,并影响返回的分数。

如果您传递了错误的操作,则生成的令牌可能有效,但站点后端将拒绝它,因为令牌中的操作与它期望的操作不匹配。正确设置此参数对于成功求解 reCAPTCHA v3 至关重要。


动作参数的作用

当站点调用 grecaptcha.execute() 时,它会传递一个操作字符串:

grecaptcha.execute('SITEKEY', { action: 'submit_form' });

此操作嵌入在令牌中。当网站向 Google 验证令牌时,响应包括:

{
  "success": true,
  "score": 0.9,
  "action": "submit_form",
  "challenge_ts": "2024-01-15T12:00:00Z",
  "hostname": "example.com"
}

后端检查response.action === 'submit_form'。如果您使用 action: 'homepage' 解决了验证码,则令牌有效,但操作不匹配会导致拒绝。


如何找到正确的动作值

方法 1:浏览器 DevTools –“网络”选项卡

  1. 打开 DevTools → 网络 选项卡
  2. recaptchaanchor 过滤
  3. 触发表单提交或页面交互
  4. 在“发起者”列中查找 grecaptcha.execute 调用
  5. 操作值出现在调用参数中

方法二:搜索页面源码

// In the browser console:
document.querySelectorAll('script').forEach(s => {
  if (s.textContent.includes('action')) {
    const match = s.textContent.match(/action['":\s]+['"](\w+)['"]/);
    if (match) console.log('Found action:', match[1]);
  }
});

方法3:搜索JavaScript文件

  1. 打开 DevTools → Sources 选项卡
  2. Ctrl + Shift + F 搜索所有文件
  3. 搜索 grecaptcha.executeaction:
  4. 操作值是选项对象中传递的字符串

共同行动价值观

行动 典型用法
homepage 登陆页面访问
login 登录表格
submit 通用表单提交
register 账户注册
checkout 支付页面
contact 联系表
search 搜索查询

将操作参数与 CaptchaAI 一起使用

Python

import requests
import time

response = requests.get("https://ocr.captchaai.com/in.php", params={
    "key": "YOUR_API_KEY",
    "method": "userrecaptcha",
    "version": "v3",
    "googlekey": "6LfZil0UAAAAADM1Dpz...",
    "action": "login",          # Must match the site's action
    "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"]
        break

Node.js

const axios = require('axios');

async function solveRecaptchaV3(sitekey, pageurl, action) {
  const submit = await axios.get('https://ocr.captchaai.com/in.php', {
    params: {
      key: 'YOUR_API_KEY',
      method: 'userrecaptcha',
      version: 'v3',
      googlekey: sitekey,
      action: action,
      pageurl: pageurl,
      json: 1
    }
  });

  const taskId = submit.data.request;

  for (let i = 0; i < 30; i++) {
    await new Promise(r => setTimeout(r, 5000));
    const result = await axios.get('https://ocr.captchaai.com/res.php', {
      params: { key: 'YOUR_API_KEY', action: 'get', id: taskId, json: 1 }
    });
    if (result.data.status === 1) return result.data.request;
  }
  throw new Error('Timeout waiting for solution');
}

solveRecaptchaV3('6LfZil0UAAAAADM1Dpz...', 'https://staging.example.com/qa-login', 'login')
  .then(token => console.log('Token:', token));

如果您使用错误的操作会发生什么

设想 结果
正确动作 令牌已接受,请求成功
错误动作 令牌有效,但后端由于操作不匹配而拒绝
空动作 有些网站接受;其他人拒绝
未找到操作 使用 homepage 作为默认值 - 某些站点不验证该操作

常问问题

reCAPTCHA v3 是否需要操作参数?

是的。每个 grecaptcha.execute() 调用都包含一个操作。如果您在 CaptchaAI 请求中省略它,求解器将使用可能与站点期望不匹配的默认值。

我可以使用任何操作值吗?

从技术上讲,但网站的后端会将令牌中的操作与预期值进行比较。即使得分很高,使用错误的动作也可能会导致拒绝。

动作会影响分数吗?

间接地。 Google 可能会为每个操作分配不同的风险模型。 login 操作的评分可能比 homepage 操作更严格,但评分主要基于行为信号。

如何找到单页应用程序的操作?

SPA 通常动态调用 grecaptcha.execute。在 DevTools 中的 grecaptcha.execute 上设置断点或监视 XHR 请求以识别调用的时间和操作。


相关指南

该文章已禁用评论。