How to Solve reCAPTCHA v2
The box above is a live reCAPTCHA v2 challenge, the classic "I'm not a robot" checkbox. This page shows three easy ways to solve reCAPTCHA v2 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.
Option 1: Solve reCAPTCHA v2 with the browser extension
The simplest way to bypass reCAPTCHA v2 is the CapSkip captcha solver extension for Chrome and Firefox. It ticks the "I'm not a robot" checkbox and clears any image challenge automatically in the background, with no code to write.
Install the extension
Add CapSkip from the Chrome Web Store or Firefox Add-ons. It also works in Brave, Edge, Opera and Vivaldi.
Run the CapSkip app
Install and open the CapSkip desktop app. It does the solving on your own device and pairs with the extension.
It solves automatically
Reload this page and CapSkip clears the reCAPTCHA v2 for you. Prefer to stay in control? Switch to manual mode anytime.
Option 2: Solve reCAPTCHA v2 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 you can submit like a real one.
6LfdaCstAAAAABOuJHFLrT3p9OB7_jpn9LhdFeqV
https://capskip.com/captcha-demo/recaptcha-v2/
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.
Install the SDK
Add the official CapSkip client to your project.
pip install capskipnpm install capskipcomposer require capskip/capskipdotnet add package CapSkipSolve 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/",
)
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/',
);
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/'
);
$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/");
string token = result.Code; // the g-recaptcha-response token
Console.WriteLine(token);You get a long g-recaptcha-response token, ready to submit.
Use the token
Put the token into the hidden g-recaptcha-response field. If the widget defines a data-callback, run it with the token. Then submit the form, which is exactly what the Check button here does after Google siteverify.
// 1. Drop the solved token into the reCAPTCHA response field
document.querySelector('[name="g-recaptcha-response"]').value = token;
// 2. If the widget has a data-callback, run it with the token,
// then submit your form.Using CapSkip on other reCAPTCHA v2 sites
To solve reCAPTCHA v2 on any site you need two values from the page:
- Site key: the
data-sitekeyattribute on the widget. You can also read it from thekparameter of the reCAPTCHA iframe URL (google.com/recaptcha/api2/anchor). - Page URL: the full address of the page.
Invisible and Enterprise variants
For Invisible reCAPTCHA v2 (no visible checkbox, a challenge only appears after you interact) add the invisible flag, and for the Enterprise build add the enterprise flag. Leave them out for the standard checkbox.
result = solver.recaptcha(
sitekey="SITEKEY_FROM_PAGE",
url="https://example.com/",
invisible=1, # add only for Invisible reCAPTCHA v2
enterprise=1, # add only for Enterprise reCAPTCHA v2
)
token = result["code"] # the g-recaptcha-response tokenconst result = await solver.recaptcha(
'SITEKEY_FROM_PAGE',
'https://example.com/',
{ invisible: 1, enterprise: 1 }, // add only the flags you need
);
const token = result.code; // the g-recaptcha-response token$result = $solver->recaptcha(
'SITEKEY_FROM_PAGE',
'https://example.com/',
['invisible' => 1, 'enterprise' => 1] // add only the flags you need
);
$token = $result['code']; // the g-recaptcha-response tokenvar result = await solver.RecaptchaAsync(
"SITEKEY_FROM_PAGE",
"https://example.com/",
new Dictionary<string, object?> { ["invisible"] = 1, ["enterprise"] = 1 }); // add only the flags you need
string token = result.Code; // the g-recaptcha-response tokenA 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 API reference.
Option 3: Send your existing solver-service code to CapSkip
Already solving 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.
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.
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.
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 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/
GET https://2captcha.com/res.php?key=YOUR_EXISTING_API_KEY&action=get&id=2122988149
OK|03AGdBq26… the g-recaptcha-response token, solved by CapSkipClient 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.
More on solving reCAPTCHA v2
Guides for the tools and languages people usually pair with this demo.
About this reCAPTCHA v2 demo
This page is a live reCAPTCHA v2 demo where you can test how the "I'm not a robot" checkbox works and watch it get solved in real time. reCAPTCHA v2 is Google's classic checkbox captcha: it may pass on the checkbox alone, or show an image challenge like picking traffic lights or crosswalks. Once it is solved, Google returns a g-recaptcha-response token that your server verifies.
Developers, testers and automation engineers can use this reCAPTCHA v2 test page to observe the checkbox and image challenges, token generation and form validation, and to benchmark how CapSkip solves reCAPTCHA v2. 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.
