在本文中,我们尽量回答了所有关键问题。要开始解决问题,第一步是确定当前使用的是哪种防护系统。为此,您可以查看常见验证码与反机器人防护系统列表,其中提供了可视化示例和关键特征,帮助您快速判断自己正在使用哪一种方案。
如果您发现自己的网站使用的是 reCAPTCHA v3,下一步就是更深入地了解它的特性和具体工作方式。在本文中,您还可以查看 reCAPTCHA v3 的接入说明,以便彻底弄清它在您的网站上是如何运行的。这样一来,您不仅能更好地理解当前的防护机制,还可以更合理地规划后续的维护和支持。
测试包含 reCAPTCHA v3 的表单时,常常需要确认 captcha 是否集成正确并工作正常。
你可以手动验证站点上的 captcha。
若想自动解题,可以使用 CapMonster Cloud 等服务,它会接收验证码参数、在服务器中解析并返回可直接使用的 token。把 token 注入表单即可无需人工操作通过验证。
通过 CapMonster Cloud API 工作的一般流程:
在请求解决 reCAPTCHA v3 时,需要指定以下参数:
type - RecaptchaV3TaskProxyless;
websiteURL - 解决验证码的页面地址;
websiteKey - 在您网站包含验证码的页面上注明的键标识符(sitekey);
minScore - 可以取值从 0.1 到 0.9;
pageAction - 由 Google 的 ReCaptcha 小部件传递的 action 参数值。默认值:verify.
https://api.capmonster.cloud/createTask{
"clientKey": "API_KEY",
"task": {
"type": "RecaptchaV3TaskProxyless",
"websiteURL": "https://lessons.zennolab.com/captchas/recaptcha/v3.php?level=beta",
"websiteKey": "6Le0xVgUAAAAAIt20XEB4rVhYOODgTl00d8juDob",
"minScore": 0.7,
"pageAction": "myverify"
}
}
{
"errorId":0,
"taskId":407533072
}
https://api.capmonster.cloud/getTaskResult{
"clientKey":"API_KEY",
"taskId": 407533072
}
{
"errorId": 0,
"status": "ready",
"solution": {
"gRecaptchaResponse": "3AHJ_VuvYIBNBW5yyv0zRYJ75VkOKv…hKj9_xGBJKnQimF72rfoq3Iy-DyGHMwLAo6a3"
}
}
const { chromium } = require('playwright');
const {
CapMonsterCloudClientFactory,
ClientOptions,
RecaptchaV3ProxylessRequest
} = require('@zennolab_com/capmonstercloud-client');
(async () => {
const TARGET_URL = 'https://lessons.zennolab.com/captchas/recaptcha/v3.php?level=beta'; // 带有验证码的页面 URL
const SITE_KEY = '6Le0xVgUAAAAAIt20XEB4rVhYOODgTl00d8juDob';
const API_KEY = 'your_capmonster_cloud_api_key'; // 填写你的 CapMonster Cloud API 密钥
// 创建 CapMonster 客户端
const cmcClient = CapMonsterCloudClientFactory.Create(new ClientOptions({ clientKey: API_KEY }));
// 启动浏览器
const browser = await chromium.launch({ headless: false });
const page = await browser.newPage();
await page.goto(TARGET_URL, { waitUntil: 'domcontentloaded' });
// 配置 reCAPTCHA v3 任务
const recaptchaRequest = new RecaptchaV3ProxylessRequest({
websiteURL: TARGET_URL,
websiteKey: SITE_KEY,
minScore: 0.6,
pageAction: 'myverify', // 确保与页面上的 action 一致
});
// 解决验证码
const solution = await cmcClient.Solve(recaptchaRequest);
const token = solution.solution?.gRecaptchaResponse;
if (!token) {
console.error('Токен пустой, проверьте sitekey и URL');
await browser.close();
return;
}
console.log('已获取令牌:', token);
// 将令牌填入隐藏字段并模拟点击按钮
// 替换为实际使用的选择器
await page.evaluate((t) => {
const input = document.querySelector('#v3_token');
if (input) input.value = t;
const form = document.querySelector('#v3_form');
if (form) form.submit();
}, token);
console.log('令牌已插入,表单已提交');
await page.waitForTimeout(5000);
await browser.close();
})();1. 打开 reCAPTCHA 的管理控制台页面。
2. 注册一个新站点,并选择验证码类型为 reCAPTCHA v3

3. 获取两组密钥:

在设置中,你还可以补充配置允许使用 reCAPTCHA 的域名,以及当站点出现问题或可疑流量增长时的告警通知。
4. 前端集成代码示例
使用 reCAPTCHA v3 最简单的方式,是引入 JavaScript API 并在按钮上添加相应属性。
引入 API:
<script src="https://www.google.com/recaptcha/api.js"></script>表单的回调函数:
<script>
function onSubmit(token) {
document.getElementById("form").submit();
}
</script>
带有 reCAPTCHA 属性的按钮:
<button class="g-recaptcha"
data-sitekey="reCAPTCHA_sitekey"
data-callback='onSubmit'
data-action='submit'>Submit</button>
如果需要更精细的控制,可以使用带有 render 参数的 grecaptcha.execute。
携带站点密钥引入 API:
<script src="https://www.google.com/recaptcha/api.js?render=reCAPTCHA_site_key"></script>以代码方式调用:
<script>
function onClick(e) {
e.preventDefault();
grecaptcha.ready(function() {
grecaptcha.execute('reCAPTCHA_sitekey', {action: 'submit'}).then(function(token) {
// 将令牌发送到服务器进行验证
});
});
}
</script>
令牌应立即发送到服务器进行校验。
重要说明:
5. 接下来在服务器端验证响应
<?php
// 你的 reCAPTCHA v3 Secret Key
$secret = 'YOUR_SECRET_KEY';
// 从表单中获取令牌
$token = $_POST['recaptcha-token'] ?? '';
// 向 Google 发送请求验证令牌
$response = file_get_contents(
"https://www.google.com/recaptcha/api/siteverify?secret={$secret}&response={$token}"
);
$result = json_decode($response, true);
// 检查是否验证成功以及信任评分
if ($result['success'] && $result['score'] >= 0.5 && $result['action'] === 'submit') {
echo "验证通过";
} else {
http_response_code(403);
echo "验证未通过";
}
?>
说明:
<input type="hidden" name="recaptcha-token" id="recaptcha-token">如果你接手了一个已经集成了验证码或其他防护系统的网站,但又无法访问其代码,也不用担心!要判断实际使用了哪种技术其实并不难。为了核实其是否正常工作,你可以在隔离的测试环境中使用CapMonster Cloud识别服务,确保令牌处理机制和校验逻辑都运行正常。
对于reCAPTCHA v3,只需识别出所用的系统,观察其行为,并确认防护是否正常工作即可。本文演示了如何识别 reCAPTCHA v3,以及到哪里查找其接入或重新配置的说明文档,从而帮助你自信地维护防护方案并掌控其运行情况。