Распознавание капчи на PHP для Laravel, Symfony и чистого cURL
Один пакет Composer превращает проверки reCAPTCHA, Turnstile и GeeTest или текст на картинке с капчей в значения, которые ваш код на cURL, Guzzle или Laravel может отправить. Распознавание CapSkip выполняет на оборудовании под вашим контролем.
- PHP 8.0 и новее
- Только curl и json
- Воркеры очередей без счётчика
$solver = new CapSkip();
$token = $solver->recaptcha([
'sitekey' => '6Le-wvkS…',
'url' => 'example.com/signup',
]);03AGdBq27…0.12s · $0.00Любой сервис распознавания капчи на PHP существует ради одного неловкого момента: ваш дескриптор cURL или клиент Guzzle запрашивает страницу и получает в ответ проверку вместо разметки, которую он должен разобрать. Установите capskip/capskip через Composer, и эта проверка отправится в десктопное приложение CapSkip, работающее на вашем собственном или арендованном оборудовании с Windows, которое вернёт токен reCAPTCHA или Turnstile, ответ GeeTest v3 или текст с картинки, готовый для вашего следующего POST-запроса.
Клиент не раздувает папку vendor: ему нужен PHP 8.0 или новее с расширениями curl и json, и больше он ничего не устанавливает. У каждого семейства проверок свой метод: recaptcha() обрабатывает v2, v3 и Enterprise, turnstile() покрывает и встроенный виджет, и полноэкранную проверку Cloudflare, geetest() принимает слайдер v3, normal() читает искажённый текст примерно за 0,1 секунды, а altcha(), capy(), captchafox(), friendlyCaptcha() и amazonWaf() дополняют список.
Ваш PHP-код может работать там же, где и сейчас. Укажите в параметре host клиента машину с CapSkip, и каждый сервер, контейнер или cron-машина, которые могут до неё достучаться, решают капчу по одной фиксированной лицензии от $35 в месяц. Ничто в счёте не зависит от того, сколько форм вы отправляете.
Выносите работу с капчей из цикла обработки запроса. Каждое решение держит свой PHP-процесс, пока не придёт ответ, поэтому отправляйте его в задачу очереди или cron-скрипт, а страницы пусть отвечают с обычной скоростью. Запускайте столько воркеров, сколько способна обслужить машина с CapSkip: тариф фиксированный, поэтому дополнительные процессы ничего не добавляют к счёту. Читать руководство по очередям Laravel
Создано для проектов на Composer и PHP-воркеров
Два расширения PHP, и всё
Пакету нужен PHP 8.0 или новее с включёнными curl и json. Других зависимостей во время выполнения он не добавляет, поэтому никогда не конфликтует с версиями, которые ваш фреймворк уже зафиксировал в composer.lock.
Все воркеры очередей на одной лицензии
Команды Artisan, запуски cron и долгоживущие воркеры работают на одном и том же безлимитном тарифе. Больше процессов означает большую пропускную способность в пределах возможностей машины, а месячная цена остаётся прежней.
Как дома в Laravel и Symfony
Зарегистрируйте один экземпляр CapSkip как singleton в сервис-провайдере Laravel или как сервис Symfony. Он не привязан к фреймворку, поэтому так же легко используется и в обычном PHP-скрипте.
Ответы в формате для Guzzle и cURL
Возьмите $result['code'] и подставьте его в form_params Guzzle или в массив CURLOPT_POSTFIELDS под тем именем поля, которое отправляет целевая форма, обычно это g-recaptcha-response.
Работает с Panther и php-webdriver
Если сайт ожидает настоящий браузер, управляйте им через Symfony Panther или php-webdriver, дайте CapSkip решить проверку, затем вставьте полученный токен в форму перед нажатием кнопки отправки.
Блокирующие вызовы с лимитом 300 секунд
Каждый вызов синхронный, и решение reCAPTCHA по умолчанию может опрашивать статус до 300 секунд. Это гораздо лучше подходит для CLI-процессов и задач очереди, чем для веб-запроса с коротким лимитом времени.
Три пути от PHP-проекта к CapSkip
<?php
// composer require capskip/capskip
require 'vendor/autoload.php';
use CapSkip\CapSkip;
$solver = new CapSkip(['host' => '127.0.0.1', 'port' => 8080]);
$result = $solver->recaptcha(
'YOUR_SITEKEY',
'https://example.com/page-with-recaptcha'
);
echo $result['code']; // g-recaptcha-response tokenЗамените YOUR_SITEKEY и пример URL на свою цель, запустите файл из командной строки, и он выведет токен reCAPTCHA для отправки вашей формы.
Расширение браузера для ручных сессий
Когда по сайту кликаете вы сами, например при тестировании собственной формы регистрации, дополнение для Chrome или Firefox позволяет запущенному приложению CapSkip проходить каждую проверку, без всякого PHP.
SDK для Composer в вашем коде
Подключите capskip/capskip, затем выбирайте метод под каждую проверку в скриптах, командах и воркерах. Для других сервисов есть родственные клиенты на Python, Node.js и .NET.
Локальный API для старого кода 2Captcha
PHP-класс, построенный вокруг API 2Captcha или Anti-Captcha, продолжает отправлять свои запросы без изменений: приложение CapSkip понимает эти форматы и отвечает с вашей собственной машины.
Испытайте PHP-клиент на живой reCAPTCHA
Наша демо-страница reCAPTCHA v2 загружает настоящий виджет. Направьте на неё фрагмент кода выше, запустите его из терминала, и он выведет рабочий токен задолго до того, как вы направите его на боевой сайт.
От composer require до первого токена
-
Подготовьте машину для распознавания
Выберите один компьютер или VPS с Windows, доступный вашим PHP-хостам, и установите туда CapSkip. После этого он будет решать капчу для каждого сервера, контейнера и cron-задачи, которые вы на него направите. Скачать установщик
-
Войдите с пробным периодом или тарифом
Используйте логин от пробного периода (500 решений, 3 дня, без карты) или от месячного тарифа. Каждый тариф открывает одни и те же типы капчи. Получить бесплатный пробный период
-
Подключите пакет и решайте
Выполните composer require capskip/capskip, создайте один клиент с хостом машины распознавания и вызывайте метод для своей проверки из CLI-скрипта или задачи очереди. Открыть документацию API
Локальное решение на PHP рядом с 2Captcha и CapSolver
Как Composer-клиент CapSkip выглядит на фоне сервисов с оплатой за решение, с которых начинают многие PHP-проекты.
| Функция | CapSkip | 2Captcha / CapSolver |
|---|---|---|
| За что вы платите | Одна месячная плата от $35, решения никогда не считаются | Каждое решение, цена за 1000 |
| Где решаются проверки | Внутри приложения CapSkip, на вашем оборудовании | Удалённые серверы API или ферма людей-решателей |
| Счёт по мере роста очереди | Не меняется, сколько бы ни было задач | Растёт с каждой задачей, которая встречает капчу |
| Кто видит капчу | Только ваши собственные машины | Её получает сторонний сервис |
| Параллельные PHP-воркеры | Без ограничения потоков; темп задаёт ваш сервер | Больше пропускной способности означает оплату большего числа решений |
| Подключение к PHP | composer require capskip/capskip или ваш прежний клиент 2Captcha | Собственная клиентская библиотека поставщика |
| Время решения капчи-картинки | Около 0,1 секунды, решение на месте | Сетевой запрос туда и обратно плюс время в очереди |
Цены
Хватит платить за каждое решение
Выберите лицензию
Лицензия Bronze
$35/ месяц
Мгновенная активация лицензии
Оплата помесячно. Отменить подписку можно в любой момент в личном кабинете.
Функции те же. Больше машин, больше производительность.
Каждая машина решает настолько быстро, насколько позволяют её процессор и память. Больше машин означает больше одновременных потоков, поэтому Silver решает вдвое больше капч одновременно, а Gold втрое больше.
- Безлимитное решение, без дневных ограничений
- Безлимитные потоки, скорость растёт вместе с оборудованием
- Точность распознавания от 90% до 100%
- Прямая замена API основных сервисов распознавания
- Работает почти с любым инструментом, без программирования
- REST API, SDK и расширение для браузера
- Бесплатное обучение, когда появляется новый тип капчи
- Работает на вашей машине, ничего с неё не уходит
Каждый тип капчи, показанный выше, входит в любую лицензию. Посмотреть список типов
Просто хотите сначала попробовать?
Начните с бесплатного 3-дневного пробного периода и решите 500 капч любого типа на своих целевых сайтах.
Похожие сервисы распознавания капчи & руководства
Решение капчи на PHP: рабочий процесс с cURL и Guzzle
Чаще всего PHP-код встречает капчу посреди автоматической отправки формы: дескриптор cURL или клиент Guzzle загружает страницу, замечает проверку, и ему нужен правильный ответ, прежде чем POST-запрос сможет уйти. Порядок действий ниже сохраняет эту сессию целой от загрузки до отправки.
Сначала соберите входные данные из уже загруженного HTML. Для reCAPTCHA и Turnstile нужны значение data-sitekey и URL страницы. Для GeeTest v3 нужна только что выданная пара gt и challenge, потому что каждый challenge срабатывает один раз и устаревает примерно за минуту. Для капчи-картинки нужно само изображение, загруженное с тем же хранилищем cookies, что и форма, чтобы оно относилось к вашей сессии. Для hCaptcha нужна та же пара, что и для reCAPTCHA, то есть data-sitekey и URL страницы, отправленные с method=hcaptcha.
Затем вызовите подходящий метод вашего клиента. Для невидимой reCAPTCHA передайте recaptcha() параметр invisible; для v3 задайте version равным v3 и укажите собственную метку action страницы. Метод turnstile() также принимает значения data и pagedata, если перед вами полноэкранная страница проверки Cloudflare. Вызов блокируется до прихода ответа, поэтому запускайте его из CLI-процесса или задачи очереди.
Наконец, поместите ответ туда, где его ищет сайт. Добавьте $result['code'] в поля POST-запроса под тем именем поля ответа, которое использует форма; для GeeTest верните значения challenge, validate и seccode так, как это сделал бы собственный фронтенд сайта; после страницы проверки Cloudflare повторите запрос с userAgent, который вернул CapSkip. Отправляйте без промедления, так как токены истекают за несколько минут, а если вы решали через прокси, отправляйте POST-запрос через тот же прокси.
Руководства по теме: Капча в очередях Laravel · reCAPTCHA v2 на PHP · Cloudflare Turnstile на PHP
Какой пакет Composer установить для распознавания капчи?
Как выглядит вызов reCAPTCHA из PHP-кода?
Справляется ли метод для Turnstile и с полноэкранной проверкой Cloudflare?
Почему мой веб-запрос обрывается по тайм-ауту, пока CapSkip решает капчу?
Как запускать много решений одновременно из PHP?
Что вызов GeeTest v3 возвращает в PHP?
Можно ли оставить PHP-класс, написанный для API 2Captcha?
Распознает ли CapSkip капчу-картинку, которую загрузил cURL?
Дайте своей очереди PHP безлимитное распознавание капчи
Установите приложение, добавьте один пакет Composer, и пусть ваши воркеры решают капчу так часто, как требует задача. Ваш счёт фиксирован, будь в очереди десять задач или десять тысяч.
