Google · Live demo

reCAPTCHA v2 Callback Demo

The "I'm not a robot" checkbox that verifies automatically via a callback.

  • Free, no signup
  • The real provider widget
  • See the verification response

Live reCAPTCHA v2 Callback widget

Tick the checkbox to verify automatically through the data-callback, with no separate button.

Time to solve 0.0s
Solve cost $0 with CapSkip

How to Solve reCAPTCHA v2 with a Callback

The box above is a reCAPTCHA v2 checkbox that fires a JavaScript callback the moment it is solved, with no separate button. This page shows three easy ways to solve it and get a valid g-recaptcha-response token: automatically with the CapSkip browser extension, in your own code with the CapSkip SDK, or by routing the captcha service your tools already call to CapSkip. CapSkip runs locally on your device, so there are no per solve fees and nothing leaves your machine.

No code needed

Option 1: Solve it with the browser extension

The simplest way to bypass reCAPTCHA v2 is the CapSkip captcha solver extension for Chrome and Firefox. It ticks the checkbox, clears any image challenge, and lets the widget's callback fire automatically in the background, with no code to write.

1

Install the extension

Add CapSkip from the Chrome Web Store or Firefox Add-ons. It also works in Brave, Edge, Opera and Vivaldi.

2

Run the CapSkip app

Install and open the CapSkip desktop app. It does the solving on your own device and pairs with the extension.

3

It solves automatically

Reload this page and CapSkip clears the reCAPTCHA, so the callback fires on its own. Prefer to stay in control? Switch to manual mode anytime.

For developers

Option 2: Solve it with the CapSkip SDK

Building automation, a scraper or a bot? Use the CapSkip captcha solving SDK to solve reCAPTCHA v2 from Python, Node.js, PHP or C#. You pass this page's site key and URL, and CapSkip returns a fresh g-recaptcha-response token. Because this widget uses a callback, you then run that callback with the token in the browser.

Site key
6LfdaCstAAAAABOuJHFLrT3p9OB7_jpn9LhdFeqV
Page URL
https://capskip.com/captcha-demo/recaptcha-v2-callback/

Before you start

CapSkip solves locally. Download and run the CapSkip desktop app and keep it open in the background. The SDK talks to it on 127.0.0.1:8080, so there are no cloud calls and no per solve fees.

1

Install the SDK

Add the official CapSkip client to your project.

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

Solve reCAPTCHA v2 and get a token

Pass this page's sitekey and url to recaptcha(). CapSkip ticks the checkbox, clears any image challenge, and returns a fresh 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/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/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/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/captcha-demo/recaptcha-v2-callback/");

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

You get a long g-recaptcha-response token, ready to hand to the callback.

3

Use the token: run the callback

Put the token into the hidden g-recaptcha-response field, then run the widget's callback with the token. reCAPTCHA fires this callback when it is solved, and it drives whatever happens next (form submission, validation, unlocking the page). Your server still verifies the token with Google siteverify.

// 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);
Advanced

Using CapSkip on other reCAPTCHA v2 callback sites

These widgets run a callback function the moment reCAPTCHA is solved. To finish the flow on any site you need three things:

  • Site key: the data-sitekey attribute on the widget, or the k parameter of the reCAPTCHA iframe URL (google.com/recaptcha/api2/anchor).
  • Callback: look for a data-callback attribute on the widget (its function is global, so call window.callbackName(token)), the callback passed to grecaptcha.render(), or read the config in the console at ___grecaptcha_cfg.clients[0].
  • Page URL: the full address of the page.

Enterprise variant

If the site uses the Enterprise build, add the enterprise flag:

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

A proxy is also supported, which helps when the site ties the token to your IP.

Not using Python, Node.js, PHP or C#? The SDKs are just wrappers over the CapSkip HTTP API (the standard in.php / res.php endpoints), so you can solve reCAPTCHA v2 from any language, framework or tool. See the reCAPTCHA v2 Callback API reference.

No code changes

Option 3: Send your existing solver-service code to CapSkip

Already solving callback-based reCAPTCHA v2 through a pay-per-captcha service such as 2Captcha, Anti-Captcha or CapMonster? You do not have to rewrite a line. The CapSkip app includes a service emulator that speaks those services' own APIs locally: pick the service you use, click Add to hosts file, and every request your bot, scraper or off-the-shelf tool already sends to it is answered by CapSkip on your own machine, for a flat price instead of a per-solve bill.

1

Pick your service

Open the CapSkip app and choose the service your code already talks to: 2Captcha, RuCaptcha, Anti-Captcha, CapMonster Cloud, CapSolver, DeathByCaptcha, SolveCaptcha or Captchas.io.

2

Add to hosts file

One click in the app points that service's domain at CapSkip, so the calls your tool makes are answered on your own machine instead of going out to a paid API.

3

Run your tool unchanged

Same API key, same request, same polling loop. CapSkip replies in that service's own format and your code gets a valid g-recaptcha-response token back.

Nothing below changes when you switch. It is the same call your code makes today, except that callback-based reCAPTCHA v2 is now solved locally and a valid g-recaptcha-response token comes back from CapSkip:

POST https://2captcha.com/in.php
     key=YOUR_EXISTING_API_KEY
     method=userrecaptcha
     googlekey=6LfdaCstAAAAABOuJHFLrT3p9OB7_jpn9LhdFeqV
     pageurl=https://capskip.com/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

Client libraries work the same way: an Anti-Captcha style createTask / getTaskResult pair, or any wrapper built on one of these services, keeps working once the emulator is on. The full request and response reference lives in the CapSkip API docs.

About this reCAPTCHA v2 callback demo

This page is a live reCAPTCHA v2 callback demo where you can test how callback based reCAPTCHA works and watch it get solved in real time. Instead of a separate submit button, this reCAPTCHA v2 widget runs a JavaScript data-callback function the moment the checkbox is solved, passing it the g-recaptcha-response token so the page can act on it right away.

Developers, testers and automation engineers can use this reCAPTCHA v2 callback test page to explore event based captcha handling, token capture and client side integration. Whether you need to solve reCAPTCHA v2 once or automate thousands of solves, CapSkip is a reCAPTCHA v2 solver that works three ways: the no-code captcha solver extension for Chrome and Firefox, and the captcha solving SDK for Python, Node.js, PHP and C#, and drop-in emulation of the captcha services you may be paying per solve today, all with unlimited solving on one flat price. All three are driven by the same desktop AI captcha solver, installed once and running on your own machine, so nothing is queued on a remote server and nothing is billed per solve.

Can I keep my existing 2Captcha or Anti-Captcha code?
Yes. The CapSkip app emulates the APIs of 2Captcha, RuCaptcha, Anti-Captcha, CapMonster Cloud, CapSolver, DeathByCaptcha and SolveCaptcha. Pick your service in the app, click "Add to hosts file", and the requests your code already sends are solved locally by CapSkip, with no code changes and no per-solve fee.
How do I solve reCAPTCHA v2 with a callback?
Install the CapSkip extension or the SDK, run the CapSkip desktop app, and CapSkip returns a valid g-recaptcha-response token for the site key. Put the token in the g-recaptcha-response field and run the widget's callback with it. The extension does all of this automatically on the page.
What is the reCAPTCHA data-callback?
It is a JavaScript function that reCAPTCHA runs the moment the challenge is solved, passing it the token. Sites use it to submit a form or unlock the page without a separate button. After solving with CapSkip, you call this function with the token.
Can reCAPTCHA v2 be bypassed?
Yes. CapSkip is a reCAPTCHA v2 solver that clears the checkbox and any image challenge, then hands you a g-recaptcha-response token. You submit it, or pass it to the widget's callback, like a real user.
How fast does CapSkip solve reCAPTCHA v2?
CapSkip usually returns a reCAPTCHA v2 token within a few seconds. Every solve runs locally on your own device, so nothing is queued on a remote server.
Can I use CapSkip with other programming languages?
Yes. Beyond the Python, Node.js, PHP and C# SDKs, CapSkip exposes a standard HTTP API, so you can solve reCAPTCHA v2 from any language, framework or tool. See the reCAPTCHA v2 Callback API reference.
Is CapSkip a free reCAPTCHA v2 solver?
The extension is free to install, and a one dollar trial gives you full access for seven days with 1,000 solves. Paid licenses unlock unlimited solving at one flat price, with no per captcha fees.