Looking for international version of our service? Go to 2captcha.com

Туториалы по обходу капчи

Как создать бесплатный сервис по обходу капчи на PHP

Как создать бесплатный сервис по обходу капчи

Бесплатный обход текстовой капчи на PHP с Tesseract OCR

В статье расписано, как построить разработать решение для распознавания текстовой капчи на PHP, используя движок Tesseract OCR и обертку thiagoalessio/tesseract_ocr.

1. Установка зависимостей

Tesseract OCR

На Linux:

sudo apt update
sudo apt install tesseract-ocr -y

На Windows: скачайте с официального сайта и добавьте tesseract.exe в системную переменную PATH.

PHP-обёртка

composer require thiagoalessio/tesseract_ocr

2. Минимальный рабочий пример

<?php

require __DIR__ . '/vendor/autoload.php';

use thiagoalessio\TesseractOCR\TesseractOCR;

$ocr = new TesseractOCR('captcha.jpg');
$ocr->lang('eng');
$ocr->setOptions([
    'tessedit_char_whitelist' => 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'
]);

$text = $ocr->run();
$cleaned = preg_replace('/[^A-Z0-9]/', '', strtoupper($text));

echo "Распознанный текст: $cleaned\n";

3. Предобработка изображения (по желанию)

Для изображений низкого качества можно добавить предобработку — это улучшит точность распознавания:

<?php

$im = imagecreatefromjpeg('captcha.jpg');
imagefilter($im, IMG_FILTER_GRAYSCALE);
imagefilter($im, IMG_FILTER_CONTRAST, -50);
imagejpeg($im, 'captcha_prepared.jpg');
imagedestroy($im);

Замените путь к файлу в OCR на 'captcha_prepared.jpg'.

4. Генерация тестовой капчи

Для тестов можно сгенерировать простую капчу с помощью ImageMagick:

convert -size 150x60 xc:white -font Arial -pointsize 30 -fill black -draw "text 20,40 'AB12'" captcha.jpg

5. Возможные проблемы

Ошибка Причина Решение
tesseract command not found Не установлен Tesseract Установите и добавьте в PATH
Пустой результат OCR Плохое качество изображения Используйте фильтры: контраст, масштаб
Файл не найден Ошибка пути или отсутствует Проверьте наличие и путь к изображению

6. Финальный код с предобработкой

<?php

require __DIR__ . '/vendor/autoload.php';

use thiagoalessio\TesseractOCR\TesseractOCR;

// Шаг 1: Подготовка изображения
$source = 'captcha.jpg';
$prepared = 'captcha_prepared.jpg';

$im = imagecreatefromjpeg($source);
imagefilter($im, IMG_FILTER_GRAYSCALE);
imagefilter($im, IMG_FILTER_CONTRAST, -50);
imagejpeg($im, $prepared);
imagedestroy($im);

// Шаг 2: Распознавание
$ocr = new TesseractOCR($prepared);
$ocr->lang('eng');
$ocr->setOptions([
    'tessedit_char_whitelist' => 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'
]);

$text = $ocr->run();
$cleaned = preg_replace('/[^A-Z0-9]/', '', strtoupper($text));

echo "Распознанный текст: $cleaned\n";

7. Ограничения

Этот подход работает только для простых текстовых капч, где буквы и цифры чёткие, нет искажений и шумов. Он не подходит для современных систем, использующих:

  • Сильные искажения, шум, линии
  • Динамическую отрисовку (canvas, WebGL)
  • Поведенческие проверки (движения мыши, клики)
  • Интерактивные задания (классификация картинок, перетаскивание)

Примеры:

  • Google reCAPTCHA v2/v3
  • hCaptcha
  • Cloudflare Turnstile
  • GeeTest

Для таких капч требуется использовать сервис распознавания, например: ruCaptcha.

Поддержка других языков. Пример написан на PHP, капчи можно обходить и на других языках:

Сервис ruCaptcha предоставляет API, одинаково работающий во всех языках — вы просто отправляете задачу и получаете результат в JSON.