Как решить 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 распознавание капчи, устанавливается один раз и работает на вашей машине, поэтому ничто не ставится в очередь на удалённом сервере и ничто не тарифицируется за каждое решение.
