Google · 在线演示

reCAPTCHA v2 回调 演示

通过回调自动验证的“我不是机器人”复选框。

  • 免费,无需注册
  • 真实提供商的小组件
  • 查看验证响应

实时 reCAPTCHA v2 回调 小组件

勾选复选框,即可通过 data-callback 自动验证,无需单独的按钮。

如何识别带回调的 reCAPTCHA v2

上方的方框是一个 reCAPTCHA v2 复选框,一旦被识别就会触发一个 JavaScript 回调,无需单独的按钮。本页展示三种简单的方式来识别它并获得有效的 g-recaptcha-response token:用 CapSkip 浏览器扩展自动识别、在你自己的代码中用 CapSkip SDK 识别,或把你的工具已经调用的验证码服务路由到 CapSkip。CapSkip 在你的设备上本地运行,因此没有按次费用,也没有任何数据离开你的机器。

无需代码

选项 1:用浏览器扩展识别

绕过 reCAPTCHA v2 最简单的方式是面向 Chrome 和 Firefox 的 CapSkip 验证码识别扩展 。它会勾选复选框、清除任何图片挑战,并让小组件的回调在后台自动触发,无需编写代码。

1

安装扩展

从 Chrome 应用商店或 Firefox 附加组件添加 CapSkip。它同样适用于 Brave、Edge、Opera 和 Vivaldi。

2

运行 CapSkip 应用

安装并打开 CapSkip 桌面应用。它在你自己的设备上完成识别,并与扩展配对。

3

它会自动识别

重新加载本页,CapSkip 会清除 reCAPTCHA,使回调自行触发。想保持掌控?随时切换到手动模式。

面向开发者

选项 2:用 CapSkip SDK 识别

在构建自动化、爬虫或机器人?使用 CapSkip 验证码识别 SDK 从以下语言识别 reCAPTCHA v2: Python, Node.js, PHPC#。你传入本页的 site key 和 URL,CapSkip 会返回一个新的 g-recaptcha-response token。由于此小组件使用回调,你随后在浏览器中用该 token 运行回调。

网站密钥(Site key)
6LfdaCstAAAAABOuJHFLrT3p9OB7_jpn9LhdFeqV
页面 URL
https://capskip.com/zh/captcha-demo/recaptcha-v2-callback/

开始之前

CapSkip 在本地识别。下载并运行 CapSkip 桌面应用 并让它在后台保持打开。SDK 通过 127.0.0.1:8080与它通信,因此没有云端调用,也没有按次费用。

1

安装 SDK

将官方 CapSkip 客户端添加到你的项目中。

pip install capskip
npm install capskip
composer require capskip/capskip
dotnet add package CapSkip
2

识别 reCAPTCHA v2 并获取 token

传入本页的 sitekeyurl 设置为 recaptcha()。CapSkip 会勾选复选框、清除任何图片挑战,并返回一个新的 g-recaptcha-response token。

from capskip import CapSkip

# Connect to the CapSkip app running on your machine
solver = CapSkip(host="127.0.0.1", port=8080)

# Solve the reCAPTCHA v2 on this page
result = solver.recaptcha(
    sitekey="6LfdaCstAAAAABOuJHFLrT3p9OB7_jpn9LhdFeqV",
    url="https://capskip.com/zh/captcha-demo/recaptcha-v2-callback/",
)

token = result["code"]   # the g-recaptcha-response token
print(token)
const { CapSkip } = require('capskip');

// Connect to the CapSkip app running on your machine
const solver = new CapSkip({ host: '127.0.0.1', port: 8080 });

(async () => {
  // Solve the reCAPTCHA v2 on this page
  const result = await solver.recaptcha(
    '6LfdaCstAAAAABOuJHFLrT3p9OB7_jpn9LhdFeqV',
    'https://capskip.com/zh/captcha-demo/recaptcha-v2-callback/',
  );

  const token = result.code; // the g-recaptcha-response token
  console.log(token);
})();
<?php
require 'vendor/autoload.php';

use CapSkip\CapSkip;

// Connect to the CapSkip app running on your machine
$solver = new CapSkip(['host' => '127.0.0.1', 'port' => 8080]);

// Solve the reCAPTCHA v2 on this page
$result = $solver->recaptcha(
    '6LfdaCstAAAAABOuJHFLrT3p9OB7_jpn9LhdFeqV',
    'https://capskip.com/zh/captcha-demo/recaptcha-v2-callback/'
);

$token = $result['code']; // the g-recaptcha-response token
echo $token;
using CapSkip;

// Connect to the CapSkip app running on your machine
var solver = new CapSkipClient(host: "127.0.0.1", port: 8080);

// Solve the reCAPTCHA v2 on this page
var result = await solver.RecaptchaAsync(
    "6LfdaCstAAAAABOuJHFLrT3p9OB7_jpn9LhdFeqV",
    "https://capskip.com/zh/captcha-demo/recaptcha-v2-callback/");

string token = result.Code; // the g-recaptcha-response token
Console.WriteLine(token);

你会得到一个很长的 g-recaptcha-response token,可随时交给回调。

3

使用 token:运行回调

将 token 放入隐藏的 g-recaptcha-response 字段,然后用该 token 运行小组件的回调。reCAPTCHA 在被识别时会触发此回调,它驱动后续发生的一切(表单提交、验证、解锁页面)。你的服务器仍需通过 Google siteverify 验证 token。

// 1. Drop the solved token into the reCAPTCHA response field
document.querySelector('[name="g-recaptcha-response"]').value = token;

// 2. Run the widget's callback with the token. Read the name from the
//    widget's data-callback attribute - on this page it is
//    "capskipV2CallbackToken" - and call that global function:
const cb = document.querySelector('.g-recaptcha').dataset.callback;
if (window[cb]) window[cb](token);
高级

在其他 reCAPTCHA v2 回调站点上使用 CapSkip

当 reCAPTCHA 被识别的那一刻,这些小组件会运行一个回调函数。要在任何站点上完成整个流程,你需要三样东西:

  • 网站密钥(Site key): 小组件上的 data-sitekey 属性,或 k reCAPTCHA iframe URL 的参数(google.com/recaptcha/api2/anchor).
  • 回调: 查找一个 data-callback 小组件上的属性(它的函数是全局的,所以调用 window.callbackName(token)), callback 传给 grecaptcha.render(),或在控制台读取以下配置: ___grecaptcha_cfg.clients[0].
  • 页面 URL: 页面的完整地址。

Enterprise 变体

如果站点使用 Enterprise 版本,请添加 enterprise 标志:

result = solver.recaptcha(
    sitekey="SITEKEY_FROM_PAGE",
    url="https://example.com/",
    enterprise=1,   # Enterprise reCAPTCHA v2
)

token = result["code"]   # the g-recaptcha-response token
const result = await solver.recaptcha(
  'SITEKEY_FROM_PAGE',
  'https://example.com/',
  { enterprise: 1 },  // Enterprise reCAPTCHA v2
);

const token = result.code; // the g-recaptcha-response token
$result = $solver->recaptcha(
    'SITEKEY_FROM_PAGE',
    'https://example.com/',
    ['enterprise' => 1]  // Enterprise reCAPTCHA v2
);

$token = $result['code']; // the g-recaptcha-response token
var result = await solver.RecaptchaAsync(
    "SITEKEY_FROM_PAGE",
    "https://example.com/",
    new Dictionary<string, object?> { ["enterprise"] = 1 });  // Enterprise reCAPTCHA v2

string token = result.Code; // the g-recaptcha-response token

还可提供一个 proxy ,当站点将 token 与你的 IP 绑定时会有帮助。

不使用 Python、Node.js、PHP 或 C#?这些 SDK 只是 CapSkip HTTP API 的封装(即标准的 由以下端点返回的验证码 ID: / res.php 端点),因此你可以从 任何语言、框架或工具识别 reCAPTCHA v2。参见 reCAPTCHA v2 回调 API 参考.

无需改动代码

选项 3:将你现有的识别服务代码发送到 CapSkip

已经在通过按次收费的服务(例如 2Captcha, Anti-CaptchaCapMonster)识别基于回调的 reCAPTCHA v2?你无需重写一行代码。CapSkip 应用包含一个 服务模拟器 ,它在本地讲这些服务自己的 API:选择你使用的服务,点击 添加到 hosts 文件,你的机器人、爬虫或现成工具已经发送给它的每个请求,都会由 CapSkip 在你自己的机器上响应,采用统一价格而非按次账单。

1

选择你的服务

打开 CapSkip 应用,选择你的代码已经在对接的服务:2Captcha、RuCaptcha、Anti-Captcha、CapMonster Cloud、CapSolver、DeathByCaptcha、SolveCaptcha 或 Captchas.io。

2

添加到 hosts 文件

在应用中一键将该服务的域名指向 CapSkip,于是你的工具发出的调用会在你自己的机器上得到响应,而不是发往付费 API。

3

原样运行你的工具

相同的 API 密钥、相同的请求、相同的轮询循环。CapSkip 以该服务自己的格式回复,你的代码会得到一个有效的 g-recaptcha-response token。

切换时下面的内容不会改变。这与你今天代码发出的调用完全相同,只是基于回调的 reCAPTCHA v2 现在在本地识别,并由 CapSkip 返回一个有效的 g-recaptcha-response token:

POST https://2captcha.com/in.php
     key=YOUR_EXISTING_API_KEY
     method=userrecaptcha
     googlekey=6LfdaCstAAAAABOuJHFLrT3p9OB7_jpn9LhdFeqV
     pageurl=https://capskip.com/zh/captcha-demo/recaptcha-v2-callback/

GET  https://2captcha.com/res.php?key=YOUR_EXISTING_API_KEY&action=get&id=2122988149
     OK|03AGdBq26…  the token to hand to the widget's callback

客户端库同样如此:Anti-Captcha 风格的 createTask / getTaskResult 配对,或任何基于这些服务构建的封装,在模拟器开启后都能继续工作。完整的请求和响应参考见 CapSkip API 文档.

继续阅读

关于识别基于回调的 reCAPTCHA v2 的更多内容

针对人们通常与此演示搭配使用的工具和语言的指南。

关于此 reCAPTCHA v2 回调演示

本页是一个实时的 reCAPTCHA v2 回调演示 ,你可以在此测试基于回调的 reCAPTCHA 如何工作,并实时观看它被识别。此 reCAPTCHA v2 小组件不使用单独的提交按钮,而是运行一个 JavaScript data-callback 在复选框被识别的那一刻运行该函数,并向其传入 g-recaptcha-response token,以便页面能立即对其作出响应。

开发者、测试人员和自动化工程师可以使用这个 reCAPTCHA v2 回调测试页面,来探索基于事件的验证码处理、token 捕获和客户端集成。无论你需要识别一次 reCAPTCHA v2,还是自动完成数千次识别,CapSkip 都是一款 reCAPTCHA v2 识别 ,它有三种工作方式:面向 Chrome 和 Firefox 的免代码 验证码识别扩展 ,面向 Python、Node.js、PHP 和 C# 的 验证码识别 SDK ,以及对你今天可能按次付费的验证码服务的即插即用模拟,全部以统一价格无限量识别。三者都由同一个桌面 AI 验证码识别工具驱动,安装一次即可在你自己的机器上运行,因此没有任何内容在远程服务器排队,也没有任何按次计费。

我可以保留现有的 2Captcha 或 Anti-Captcha 代码吗?
可以。CapSkip 应用模拟以下服务的 API: 2Captcha, RuCaptcha, Anti-Captcha, CapMonster Cloud, CapSolver, DeathByCaptchaSolveCaptcha。在应用中选择你的服务,点击“添加到 hosts 文件”,你的代码已经发送的请求就会由 CapSkip 在本地识别,无需改动代码,也无按次费用。
如何识别带回调的 reCAPTCHA v2?
安装 CapSkip 扩展SDK,运行 CapSkip 桌面应用,CapSkip 会为该 site key 返回一个有效的 g-recaptcha-response token。将 token 放入 g-recaptcha-response 字段,并用它运行小组件的回调。扩展会在页面上自动完成这一切。
什么是 reCAPTCHA data-callback?
它是一个 JavaScript 函数,reCAPTCHA 会在挑战被识别的那一刻运行它,并将 token 传给它。站点用它来提交表单或解锁页面,而无需单独的按钮。使用 CapSkip 识别后,你需要用 token 调用这个函数。
reCAPTCHA v2 能被绕过吗?
可以。CapSkip 是一款 reCAPTCHA v2 识别工具,它会清除复选框和任何图片挑战,然后交给你一个 g-recaptcha-response token。你像真实用户一样提交它,或将它传给小组件的回调。
CapSkip 识别 reCAPTCHA v2 有多快?
CapSkip 通常在几秒内返回 reCAPTCHA v2 token。每次识别都在你自己的设备上本地运行,因此没有任何内容在远程服务器排队。
我可以将 CapSkip 与其他编程语言一起使用吗?
可以。除了 Python、Node.js、PHP 和 C# SDK,CapSkip 还提供标准 HTTP API,因此你可以从任何语言、框架或工具识别 reCAPTCHA v2。参见 reCAPTCHA v2 回调 API 参考.
CapSkip 是免费的 reCAPTCHA v2 识别工具吗?
扩展可免费安装,1 美元试用可让你完整使用 7 天并识别 1,000 次。付费授权以统一价格解锁无限量识别,无按验证码费用。