How to Solve Invisible reCAPTCHA v2
The box above uses Invisible reCAPTCHA v2: there is no checkbox. It runs in a hidden widget and either passes silently or shows an image challenge when Google wants extra proof. 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.
Option 1: Solve Invisible reCAPTCHA v2 with the browser extension
The simplest way to bypass Invisible reCAPTCHA v2 is the CapSkip captcha solver extension for Chrome and Firefox. It clears the invisible challenge, and any image challenge that appears, 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 invisible reCAPTCHA for you. Prefer to stay in control? Switch to manual mode anytime.
Option 2: Solve Invisible reCAPTCHA v2 with the CapSkip SDK
Building automation, a scraper or a bot? Use the CapSkip captcha solving SDK to solve Invisible reCAPTCHA v2 from Python, Node.js, PHP or C#. You pass this page's site key and URL with the invisible flag, and CapSkip returns a fresh g-recaptcha-response token you can submit like a real one.
6LdDaSstAAAAAMRGlOvQjLQGaT1jD9s-HXwGIez7
https://capskip.com/captcha-demo/recaptcha-v2-invisible/
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 Invisible reCAPTCHA v2 and get a token
Pass this page's sitekey and url to recaptcha() with the invisible flag. CapSkip clears the invisible 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 Invisible reCAPTCHA v2 on this page
result = solver.recaptcha(
sitekey="6LdDaSstAAAAAMRGlOvQjLQGaT1jD9s-HXwGIez7",
url="https://capskip.com/captcha-demo/recaptcha-v2-invisible/",
invisible=1,
)
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 Invisible reCAPTCHA v2 on this page
const result = await solver.recaptcha(
'6LdDaSstAAAAAMRGlOvQjLQGaT1jD9s-HXwGIez7',
'https://capskip.com/captcha-demo/recaptcha-v2-invisible/',
{ invisible: 1 },
);
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 Invisible reCAPTCHA v2 on this page
$result = $solver->recaptcha(
'6LdDaSstAAAAAMRGlOvQjLQGaT1jD9s-HXwGIez7',
'https://capskip.com/captcha-demo/recaptcha-v2-invisible/',
['invisible' => 1]
);
$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 Invisible reCAPTCHA v2 on this page
var result = await solver.RecaptchaAsync(
"6LdDaSstAAAAAMRGlOvQjLQGaT1jD9s-HXwGIez7",
"https://capskip.com/captcha-demo/recaptcha-v2-invisible/",
new Dictionary<string, object?> { ["invisible"] = 1 });
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. Invisible reCAPTCHA has no checkbox, so run the widget's data-callback with the token, or submit the form yourself. Your server then verifies it with Google siteverify, which is exactly what the Check button here does.
// Drop the solved token into the reCAPTCHA response field
document.querySelector('[name="g-recaptcha-response"]').value = token;
// Invisible reCAPTCHA has no checkbox: run the widget's data-callback
// with the token, or submit your form directly.Using CapSkip on other Invisible reCAPTCHA v2 sites
Invisible reCAPTCHA v2 has no visible checkbox. You can spot it when the reCAPTCHA iframe URL contains size=invisible, or when a challenge only appears after you interact with the page. To solve it you need two values:
- 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.
Enterprise variant
If the site uses the Enterprise build, add the enterprise flag alongside invisible:
result = solver.recaptcha(
sitekey="SITEKEY_FROM_PAGE",
url="https://example.com/",
invisible=1,
enterprise=1, # Enterprise Invisible reCAPTCHA v2
)
token = result["code"] # the g-recaptcha-response tokenconst result = await solver.recaptcha(
'SITEKEY_FROM_PAGE',
'https://example.com/',
{ invisible: 1, enterprise: 1 }, // Enterprise Invisible reCAPTCHA v2
);
const token = result.code; // the g-recaptcha-response token$result = $solver->recaptcha(
'SITEKEY_FROM_PAGE',
'https://example.com/',
['invisible' => 1, 'enterprise' => 1] // Enterprise Invisible reCAPTCHA v2
);
$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 }); // Enterprise Invisible reCAPTCHA v2
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 Invisible reCAPTCHA v2 from any language, framework or tool. See the Invisible reCAPTCHA v2 API reference.
Option 3: Send your existing solver-service code to CapSkip
Already solving Invisible 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 Invisible 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=6LdDaSstAAAAAMRGlOvQjLQGaT1jD9s-HXwGIez7
pageurl=https://capskip.com/captcha-demo/recaptcha-v2-invisible/
invisible=1
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 Invisible reCAPTCHA v2
Guides for the tools and languages people usually pair with this demo.
About this Invisible reCAPTCHA v2 demo
This page is a live Invisible reCAPTCHA v2 demo where you can test how invisible reCAPTCHA works and watch it get solved in real time. Invisible reCAPTCHA v2 skips the "I'm not a robot" checkbox: it runs in the background, analyzes behavior, and only shows an image challenge when Google wants extra proof. When it clears, Google returns a g-recaptcha-response token that your server verifies.
Developers, testers and automation engineers can use this Invisible reCAPTCHA v2 test page to observe background verification, challenge triggering, token generation and form submission. Whether you need to solve Invisible reCAPTCHA v2 once or automate thousands of solves, CapSkip is an invisible reCAPTCHA 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.
