PHP SDK

Распознавание капчи на PHP для Laravel, Symfony и чистого cURL

Один пакет Composer превращает проверки reCAPTCHA, Turnstile и GeeTest или текст на картинке с капчей в значения, которые ваш код на cURL, Guzzle или Laravel может отправить. Распознавание CapSkip выполняет на оборудовании под вашим контролем.

Windows x64·Работает локально, поэтому капча не покидает ваш компьютер
  • PHP 8.0 и новее
  • Только curl и json
  • Воркеры очередей без счётчика
капч в месяц40,000
40.0k250.0k
В других сервисах поштучно, примерно $1.40 за 1000$56.00
CapSkip Bronze, фиксированно$35.00
$21.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
<?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 до первого токена

  1. Подготовьте машину для распознавания

    Выберите один компьютер или VPS с Windows, доступный вашим PHP-хостам, и установите туда CapSkip. После этого он будет решать капчу для каждого сервера, контейнера и cron-задачи, которые вы на него направите. Скачать установщик

  2. Войдите с пробным периодом или тарифом

    Используйте логин от пробного периода (500 решений, 3 дня, без карты) или от месячного тарифа. Каждый тариф открывает одни и те же типы капчи. Получить бесплатный пробный период

  3. Подключите пакет и решайте

    Выполните composer require capskip/capskip, создайте один клиент с хостом машины распознавания и вызывайте метод для своей проверки из CLI-скрипта или задачи очереди. Открыть документацию API

Локальное решение на PHP рядом с 2Captcha и CapSolver

Как Composer-клиент CapSkip выглядит на фоне сервисов с оплатой за решение, с которых начинают многие PHP-проекты.

ФункцияCapSkip2Captcha / CapSolver
За что вы платитеОдна месячная плата от $35, решения никогда не считаютсяКаждое решение, цена за 1000
Где решаются проверкиВнутри приложения CapSkip, на вашем оборудованииУдалённые серверы API или ферма людей-решателей
Счёт по мере роста очередиНе меняется, сколько бы ни было задачРастёт с каждой задачей, которая встречает капчу
Кто видит капчуТолько ваши собственные машиныЕё получает сторонний сервис
Параллельные PHP-воркерыБез ограничения потоков; темп задаёт ваш серверБольше пропускной способности означает оплату большего числа решений
Подключение к PHPcomposer require capskip/capskip или ваш прежний клиент 2CaptchaСобственная клиентская библиотека поставщика
Время решения капчи-картинкиОколо 0,1 секунды, решение на местеСетевой запрос туда и обратно плюс время в очереди

Цены

Хватит платить за каждое решение

Выберите лицензию

Лицензия Bronze

$35/ месяц

Подписаться на Bronze

Мгновенная активация лицензии

Оплата помесячно. Отменить подписку можно в любой момент в личном кабинете.

Функции те же. Больше машин, больше производительность.

Каждая машина решает настолько быстро, насколько позволяют её процессор и память. Больше машин означает больше одновременных потоков, поэтому 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 установить для распознавания капчи?
Выполните composer require capskip/capskip. Пакет бесплатный, распространяется под лицензией MIT, требует PHP 8.0 или новее с расширениями curl и json и не тянет за собой других зависимостей. Он лишь передаёт данные между вашим кодом и приложением CapSkip, поэтому для самого распознавания нужна лицензия CapSkip, начиная с бесплатного 3-дневного пробного периода.
Как выглядит вызов reCAPTCHA из PHP-кода?
Считайте data-sitekey с загруженной страницы, вызовите recaptcha() с этим ключом и URL страницы и отправьте $result['code'] как g-recaptcha-response. Тот же метод покрывает невидимую reCAPTCHA через параметр invisible, v3, если задать параметр version равным v3 и добавить имя action страницы, а также сайты с Enterprise.
Справляется ли метод для Turnstile и с полноэкранной проверкой Cloudflare?
Да. Метод turnstile() решает встроенный виджет, а его токен отправляется в поле ответа Turnstile формы. На промежуточной странице, которую Cloudflare показывает до загрузки сайта, также соберите её значения data и pagedata, затем повторите запрос со значением userAgent из результата через тот же прокси, с которым решали.
Почему мой веб-запрос обрывается по тайм-ауту, пока CapSkip решает капчу?
Потому что вызов блокирует весь PHP-процесс, а браузерные решения, например reCAPTCHA, по умолчанию могут опрашивать статус до 300 секунд, что намного превышает типичный max_execution_time. Перенесите распознавание в команду artisan, cron-скрипт или воркер очереди, где процессу разрешено ждать ответа.
Как запускать много решений одновременно из PHP?
Используйте больше процессов. Один PHP-процесс обрабатывает одно решение за раз, поэтому запустите несколько воркеров очереди или CLI-скриптов и направьте их все на одно и то же приложение CapSkip. Потоки не ограничены ни на одном тарифе; предел задают процессор и оперативная память машины с CapSkip, а цена не меняется.
Что вызов GeeTest v3 возвращает в PHP?
Получите новое значение gt и challenge с сайта непосредственно перед решением, так как каждое из них одноразовое. Метод geetest() обычно тратит от 7 до 12 секунд и возвращает $result['challenge'], $result['validate'] и $result['seccode'], которые вы отправляете обратно в формате, который использует собственный фронтенд сайта.
Можно ли оставить PHP-класс, написанный для API 2Captcha?
Да. На Windows-машине с CapSkip включите эмуляцию 2Captcha и нажмите кнопку Add to hosts file; после этого ваш существующий класс будет получать ответы локально. Если этот PHP-код работает на другом сервере, обычно можно вместо этого направить класс на машину с CapSkip по порту 8080.
Распознает ли CapSkip капчу-картинку, которую загрузил cURL?
Да. Метод normal() принимает сохранённый файл, ссылку на удалённое изображение или данные base64, а символы возвращаются в $result['code'], обычно примерно за 0,1 секунды. Загружайте картинку в той же сессии cURL, что и форму, вместе с cookies, чтобы ответ соответствовал вашей сессии. Для распознавания картинок прокси не нужен.

Дайте своей очереди PHP безлимитное распознавание капчи

Установите приложение, добавьте один пакет Composer, и пусть ваши воркеры решают капчу так часто, как требует задача. Ваш счёт фиксирован, будь в очереди десять задач или десять тысяч.