Как решить reCAPTCHA v2 с callback
Поле выше — это reCAPTCHA v2 чекбокс, который запускает JavaScript-callback в момент решения, без отдельной кнопки. На этой странице показаны три простых способа решить её и получить действительный g-recaptcha-response токен: автоматически с помощью расширения CapSkip для браузера, в вашем собственном коде с CapSkip SDK или перенаправив на CapSkip сервис капчи, который уже вызывают ваши инструменты. CapSkip работает локально на вашем устройстве, поэтому нет платы за каждое решение и ничего не покидает вашу машину.
Вариант 1: решите её с помощью расширения для браузера
Самый простой способ обойти reCAPTCHA v2 — это Расширение CapSkip для распознавания капчи для Chrome и Firefox. Он ставит галочку в чекбоксе, проходит любую графическую капчу и позволяет callback виджета сработать автоматически в фоне, без единой строки кода.
Установите расширение
Добавьте CapSkip из Chrome Web Store или Firefox Add-ons. Он также работает в Brave, Edge, Opera и Vivaldi.
Запустите приложение CapSkip
Установите и откройте десктопное приложение CapSkip. Оно выполняет распознавание на вашем устройстве и работает в паре с расширением.
Решает автоматически
Перезагрузите эту страницу — и CapSkip пройдёт reCAPTCHA, так что callback сработает сам. Предпочитаете сохранять контроль? Переключитесь в ручной режим в любой момент.
Вариант 2: решение с помощью CapSkip SDK
Создаёте автоматизацию, парсер или бота? Используйте SDK для распознавания капчи CapSkip чтобы решить reCAPTCHA v2 из Python, Node.js, PHP или C#. Вы передаёте site key и URL этой страницы, и CapSkip возвращает свежий токен g-recaptcha-response. Поскольку этот виджет использует callback, вы затем выполняете этот callback с токеном в браузере.
6LfdaCstAAAAABOuJHFLrT3p9OB7_jpn9LhdFeqV
https://capskip.com/ru/captcha-demo/recaptcha-v2-callback/
Прежде чем начать
CapSkip решает капчу локально. Скачайте и запустите Десктопное приложение CapSkip и держите его открытым в фоновом режиме. SDK обращается к нему по 127.0.0.1:8080, поэтому нет обращений к облаку и нет платы за каждое решение.
Установите SDK
Добавьте официальный клиент CapSkip в свой проект.
pip install capskipnpm install capskipcomposer require capskip/capskipdotnet add package CapSkipРешите reCAPTCHA v2 и получите токен
Передайте для этой страницы sitekey и url в 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/ru/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/ru/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/ru/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/ru/captcha-demo/recaptcha-v2-callback/");
string token = result.Code; // the g-recaptcha-response token
Console.WriteLine(token);Вы получаете длинный g-recaptcha-response токен, готовый к передаче в callback.
Используйте токен: запустите callback
Поместите токен в скрытое g-recaptcha-response поле, затем вызовите callback виджета с токеном. reCAPTCHA вызывает этот callback после решения, и он запускает всё, что происходит дальше (отправку формы, валидацию, разблокировку страницы). Ваш сервер по-прежнему проверяет токен через 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);Использование CapSkip на других сайтах с callback reCAPTCHA v2
Эти виджеты запускают callback-функцию в тот момент, когда reCAPTCHA решена. Чтобы завершить процесс на любом сайте, вам нужны три вещи:
- Site key: тот
data-sitekeyатрибут на виджете, илиkпараметр URL iframe reCAPTCHA (google.com/recaptcha/api2/anchor). - Callback: ищите
data-callbackатрибут на виджете (его функция глобальна, поэтому вызовитеwindow.callbackName(token)), thecallbackпереданный в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 tokenconst 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 tokenvar 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 tokenA proxy также поддерживается, что помогает, когда сайт привязывает токен к вашему IP.
Не используете Python, Node.js, PHP или C#? SDK — это всего лишь обёртки над HTTP API CapSkip (стандартный in.php / res.php эндпоинты), поэтому вы можете решать reCAPTCHA v2 из любой язык, фреймворк или инструмент. См. Справочник по API reCAPTCHA v2 Callback.
Вариант 3: направьте существующий код сервиса-решателя в CapSkip
Уже решаете reCAPTCHA v2 на основе callback через сервис с оплатой за капчу, такой как 2Captcha, Anti-Captcha или CapMonster? Вам не нужно переписывать ни строки. Приложение CapSkip включает эмулятор сервиса который локально говорит на собственных API этих сервисов: выберите используемый сервис, нажмите Добавить в файл hosts, и на каждый запрос, который ваш бот, парсер или готовый инструмент уже отправляет ему, отвечает CapSkip на вашей собственной машине — по фиксированной цене вместо счёта за каждое решение.
Выберите свой сервис
Откройте приложение CapSkip и выберите сервис, с которым уже работает ваш код: 2Captcha, RuCaptcha, Anti-Captcha, CapMonster Cloud, CapSolver, DeathByCaptcha, SolveCaptcha или Captchas.io.
Добавить в файл hosts
Один клик в приложении направляет домен этого сервиса на CapSkip, поэтому вызовы, которые делает ваш инструмент, обрабатываются на вашей машине, а не уходят к платному API.
Запускайте свой инструмент без изменений
Тот же API-ключ, тот же запрос, тот же цикл опроса. CapSkip отвечает в собственном формате этого сервиса, и ваш код получает обратно действительный токен g-recaptcha-response.
Ничего из перечисленного ниже не меняется при переходе. Это тот же вызов, который ваш код делает сегодня, только теперь reCAPTCHA v2 на основе callback решается локально, а валидный токен g-recaptcha-response возвращается от CapSkip:
POST https://2captcha.com/in.php
key=YOUR_EXISTING_API_KEY
method=userrecaptcha
googlekey=6LfdaCstAAAAABOuJHFLrT3p9OB7_jpn9LhdFeqV
pageurl=https://capskip.com/ru/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 пара, или любая обёртка, построенная на одном из этих сервисов, продолжает работать, как только включён эмулятор. Полный справочник по запросам и ответам находится в Документация по API CapSkip.
Подробнее о решении reCAPTCHA v2 на основе callback
Руководства по инструментам и языкам, которые обычно используют вместе с этой демонстрацией.
Об этом демо reCAPTCHA v2 с callback
Эта страница — живая Демо callback reCAPTCHA v2 где вы можете проверить, как работает reCAPTCHA на основе callback, и увидеть решение в реальном времени. Вместо отдельной кнопки отправки этот виджет reCAPTCHA v2 выполняет JavaScript data-callback функцию в тот момент, когда чекбокс решён, передавая ей g-recaptcha-response токен, чтобы страница могла сразу его использовать.
Разработчики, тестировщики и инженеры по автоматизации могут использовать эту тестовую страницу reCAPTCHA v2 с callback, чтобы изучить обработку капчи на основе событий, перехват токена и клиентскую интеграцию. Нужно ли вам решить reCAPTCHA v2 один раз или автоматизировать тысячи решений — CapSkip это Решатель reCAPTCHA v2 который работает тремя способами: без кода расширение для распознавания капчи для Chrome и Firefox, и SDK для распознавания капчи для Python, Node.js, PHP и C#, а также готовую эмуляцию сервисов распознавания капчи, за которые вы, возможно, сегодня платите за каждое решение, — всё с безлимитным решением по единой фиксированной цене. Все три работают на одном и том же десктопном AI распознавание капчи, устанавливается один раз и работает на вашей машине, поэтому ничто не ставится в очередь на удалённом сервере и ничто не тарифицируется за каждое решение.
