action 参数是一个字符串标签,告诉 Google 用户正在做什么 - login、checkout、homepage、submit_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 –“网络”选项卡
- 打开 DevTools → 网络 选项卡
- 按
recaptcha或anchor过滤 - 触发表单提交或页面交互
- 在“发起者”列中查找
grecaptcha.execute调用 - 操作值出现在调用参数中
方法二:搜索页面源码
// 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文件
- 打开 DevTools → Sources 选项卡
- 按
Ctrl + Shift + F搜索所有文件 - 搜索
grecaptcha.execute或action: - 操作值是选项对象中传递的字符串
共同行动价值观
| 行动 | 典型用法 |
|---|---|
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 请求以识别调用的时间和操作。
相关指南
- 如何使用API自动解决reCAPTCHA v3
- 为什么reCAPTCHA v3返回低分
- 如何在 reCAPTCHA v3 上获得高人类分数
- reCAPTCHA v2 与 v3 解释