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

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

Как распознать, решить и обойти капчу картинку (изображение) автоматически

Как решить и обойти капчу с изображением: интеграция с API сервиса распознавания. Примеры кода: Java, C#, Python, PHP, JavaScript, Golang

Чтобы обойти капчи с каринками и изображениями можно использовать различные подходы. В статье рассматривается метод обхода с использованием сервисов распознавания.

Причины поиска решения для автоматизации обхода

Капчи создают барьеры для пользователей с ограниченными возможностями, что требует разработки более инклюзивных решений.

Для автоматизации обхода требуется применение продвинутых моделей машинного обучения или API сервисов, что добавляет сложности в автоматизацию. В статье описаны решения и приведены полные инструкции для наиболее распространенных язык программирования.

PHP

Для решения капчи изображения (картинки) с помощью PHP выполните следующие шаги:

1. Установка

Через Composer:

Установите Composer. Затем выполните команду:

composer require 2captcha/2captcha

Ручная установка:

Скачайте содержимое папки src из репозитория 2Captcha на GitHub и подключите автозагрузчик в вашем проекте:

require 'path/to/src/autoloader.php';

2. Конфигурация

Создайте экземпляр класса TwoCaptcha с вашим API-ключом:

$solver = new \TwoCaptcha\TwoCaptcha('ВАШ_API_КЛЮЧ');

При необходимости можно настроить дополнительные параметры:

$solver = new \TwoCaptcha\TwoCaptcha([
    'apiKey'           => 'ВАШ_API_КЛЮЧ',
    'softId'           => 123,
    'callback'         => 'https://your.site/result-receiver',
    'defaultTimeout'   => 120,
    'recaptchaTimeout' => 600,
    'pollingInterval'  => 10,
]);

3. Решение капчи

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

try {
    $result = $solver->normal('path/to/captcha.jpg');
    echo 'Капча решена: ' . $result->code;
} catch (\Exception $e) {
    echo 'Ошибка: ' . $e->getMessage();
}

Где 'path/to/captcha.jpg' — путь к изображению капчи.

4. Дополнительные методы

  • Получение баланса аккаунта:

    $balance = $solver->balance();
    echo 'Баланс: ' . $balance;
  • Сообщение о корректности решения капчи:

    $solver->report($captchaId, true);  // если капча решена верно
    $solver->report($captchaId, false); // если капча решена неверно

5. Обработка ошибок

Рекомендуется использовать блоки try/catch для обработки возможных исключений:

try {
    $result = $solver->normal('path/to/captcha.jpg');
} catch (\TwoCaptcha\Exception\ValidationException $e) {
    // неверные параметры
} catch (\TwoCaptcha\Exception\NetworkException $e) {
    // ошибка сети
} catch (\TwoCaptcha\Exception\ApiException $e) {
    // ошибка API
} catch (\TwoCaptcha\Exception\TimeoutException $e) {
    // капча не решена вовремя
}

Для получения дополнительной информации обратитесь к документации 2Captcha по работе с PHP.

Java

Для решения капчи изображения (картинки) с помощью Java выполните следующие шаги:

1. Установка

Через Maven:

Убедитесь, что у вас настроен Maven. Добавьте следующую зависимость в ваш pom.xml:

<dependency>
    <groupId>com.github.2captcha</groupId>
    <artifactId>2captcha-java</artifactId>
    <version>1.0.0</version>
</dependency>

Ручная установка:

Скачайте библиотеку 2captcha-java из репозитория на GitHub и добавьте её в путь к классам вашего проекта.

2. Конфигурация

Создайте экземпляр класса TwoCaptcha с вашим API-ключом:

TwoCaptcha solver = new TwoCaptcha("ВАШ_API_КЛЮЧ");

При необходимости настройте дополнительные параметры:

solver.setSoftId(123); // ID вашего программного обеспечения
solver.setCallback("https://your.site/result-receiver"); // URL для получения результатов
solver.setDefaultTimeout(120); // Таймаут ожидания решения капчи (в секундах)
solver.setRecaptchaTimeout(600); // Таймаут для reCAPTCHA (в секундах)
solver.setPollingInterval(10); // Интервал между запросами на получение результата (в секундах)

3. Решение капчи

Для отправки капчи изображения (картинки) на решение используйте следующий код:

Normal captcha = new Normal();
captcha.setFile("path/to/captcha.jpg"); // Путь к файлу с изображением капчи
captcha.setLang("en"); // Язык капчи (например, "en" для английского)

try {
    solver.solve(captcha);
    System.out.println("Капча решена: " + captcha.getCode());
} catch (Exception e) {
    System.err.println("Ошибка: " + e.getMessage());
}

Где "path/to/captcha.jpg" — путь к изображению капчи.

4. Дополнительные методы

  • Получение баланса аккаунта:

    try {
        double balance = solver.balance();
        System.out.println("Баланс: " + balance);
    } catch (Exception e) {
        System.err.println("Ошибка при получении баланса: " + e.getMessage());
    }
  • Сообщение о корректности решения капчи:

    try {
        solver.report(captcha.getId(), true); // Если капча решена верно
        // solver.report(captcha.getId(), false); // Если капча решена неверно
    } catch (Exception e) {
        System.err.println("Ошибка при отправке отчёта: " + e.getMessage());
    }

5. Обработка ошибок

Рекомендуется использовать блоки try-catch для обработки возможных исключений:

try {
    solver.solve(captcha);
} catch (ValidationException e) {
    // Неверные параметры
} catch (NetworkException e) {
    // Ошибка сети
} catch (ApiException e) {
    // Ошибка API
} catch (TimeoutException e) {
    // Капча не решена вовремя
} catch (Exception e) {
    // Другая ошибка
}

Для получения дополнительной информации обратитесь к документации 2Captcha по работе с Java.

C#

Для решения капчи изображения (картинки) с помощью C# выполните следующие шаги:

1. Установка

Через NuGet

Убедитесь, что у вас установлен NuGet. Выполните следующую команду в консоли диспетчера пакетов:

Install-Package 2captcha-csharp

Ручная установка

Скачайте библиотеку 2captcha-csharp из репозитория GitHub и подключите её к вашему проекту.


2. Конфигурация

Создайте экземпляр класса TwoCaptcha и укажите ваш API-ключ:

TwoCaptcha solver = new TwoCaptcha("ВАШ_API_КЛЮЧ");

Дополнительные настройки (опционально):

solver.SoftId = 123; // ID вашего приложения
solver.Callback = "https://your.site/result-receiver"; // URL для обратного вызова
solver.DefaultTimeout = 120; // Таймаут ожидания решения капчи (в секундах)
solver.RecaptchaTimeout = 600; // Таймаут для reCAPTCHA
solver.PollingInterval = 10; // Интервал запросов результата (в секундах)

3. Решение капчи

Используйте следующий код для отправки изображения капчи:

Normal captcha = new Normal();
captcha.SetFile("path/to/captcha.jpg"); // Путь к изображению
captcha.SetLang("en"); // Язык капчи (например, "en" для английского)

try
{
    await solver.Solve(captcha);
    Console.WriteLine("Капча решена: " + captcha.Code);
}
catch (Exception e)
{
    Console.WriteLine("Ошибка: " + e.Message);
}

Где "path/to/captcha.jpg" — путь к файлу капчи на вашем устройстве.


4. Полезные функции

Получение баланса аккаунта

Для проверки баланса используйте:

try
{
    double balance = await solver.Balance();
    Console.WriteLine("Баланс: " + balance);
}
catch (Exception e)
{
    Console.WriteLine("Ошибка при получении баланса: " + e.Message);
}

Сообщение о правильности решения капчи

Если капча решена правильно или неправильно, вы можете сообщить об этом:

try
{
    await solver.Report(captcha.Id, true); // true — если капча решена правильно
    // await solver.Report(captcha.Id, false); // false — если капча решена неверно
}
catch (Exception e)
{
    Console.WriteLine("Ошибка при отправке отчёта: " + e.Message);
}

5. Обработка ошибок

Используйте блок try-catch для обработки возможных исключений:

try
{
    await solver.Solve(captcha);
}
catch (ValidationException e)
{
    Console.WriteLine("Ошибка в параметрах: " + e.Message);
}
catch (NetworkException e)
{
    Console.WriteLine("Ошибка сети: " + e.Message);
}
catch (ApiException e)
{
    Console.WriteLine("Ошибка API: " + e.Message);
}
catch (TimeoutException e)
{
    Console.WriteLine("Капча не решена вовремя: " + e.Message);
}
catch (Exception e)
{
    Console.WriteLine("Неизвестная ошибка: " + e.Message);
}

6. Полезные ссылки

Golang

Для решения капч картинок (изображений) с использованием языка Go выполните следующие шаги:

1. Установка

Через go get:

Убедитесь, что у вас установлен Go. Затем выполните команду:

go get -u github.com/2captcha/2captcha-go

2. Конфигурация

Импортируйте необходимый пакет и создайте экземпляр клиента с вашим API-ключом:

package main

import (
    "fmt"
    "log"
    "github.com/2captcha/2captcha-go"
)

func main() {
    client := api2captcha.NewClient("ВАШ_API_КЛЮЧ")
    // Дополнительные настройки
    client.SoftId = 123
    client.Callback = "https://your.site/result-receiver"
    client.DefaultTimeout = 120
    client.RecaptchaTimeout = 600
    client.PollingInterval = 10

    // Решение капчи
    cap := api2captcha.Normal{
        File: "/path/to/captcha.jpg",
    }

    code, err := client.Solve(cap.ToRequest())
    if err != nil {
        log.Fatal(err)
    }
    fmt.Println("Капча решена: ", code)
}

Где "/path/to/captcha.jpg" — путь к изображению капчи.

3. Решение капчи

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

cap := api2captcha.Normal{
    File: "/path/to/captcha.jpg",
}

code, err := client.Solve(cap.ToRequest())
if err != nil {
    log.Fatal(err)
}
fmt.Println("Капча решена: ", code)

4. Дополнительные методы

  • Получение баланса аккаунта:

    balance, err := client.GetBalance()
    if err != nil {
        log.Fatal(err)
    }
    fmt.Println("Баланс: ", balance)
  • Сообщение о корректности решения капчи:

    err := client.Report(id, true)  // если капча решена верно
    // err := client.Report(id, false) // если капча решена неверно
    if err != nil {
        log.Fatal(err)
    }

5. Обработка ошибок

Рекомендуется использовать блоки if err != nil для обработки возможных ошибок:

code, err := client.Solve(cap.ToRequest())
if err != nil {
    if err == api2captcha.ErrTimeout {
        log.Fatal("Превышено время ожидания")
    } else if err == api2captcha.ErrApi {
        log.Fatal("Ошибка API")
    } else if err == api2captcha.ErrNetwork {
        log.Fatal("Сетевая ошибка")
    } else {
        log.Fatal(err)
    }
}
fmt.Println("Капча решена: ", code)

Для получения дополнительной информации обратитесь к документации 2Captcha по работе с Go.

JavaScript

Для решения капч картинок (изображений) с использованием JavaScript выполните следующие шаги:

1. Установка

Через npm:

Убедитесь, что у вас установлен Node.js. Затем выполните команду:

npm install @2captcha/captcha-solver

2. Конфигурация

Импортируйте необходимый модуль и создайте экземпляр класса Solver с вашим API-ключом:

const { Solver } = require('@2captcha/captcha-solver');
const solver = new Solver('ВАШ_API_КЛЮЧ');

3. Решение капчи

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

const fs = require('fs');

const imagePath = 'path/to/captcha.jpg';
const imageData = fs.readFileSync(imagePath, { encoding: 'base64' });

solver.imageCaptcha({ body: `data:image/jpeg;base64,${imageData}` })
    .then(response => {
        console.log('Капча решена:', response.data);
    })
    .catch(error => {
        console.error('Ошибка:', error.message);
    });

Где 'path/to/captcha.jpg' — путь к изображению капчи.

4. Дополнительные методы

  • Получение баланса аккаунта:

    solver.balance()
        .then(balance => {
            console.log('Баланс:', balance);
        })
        .catch(error => {
            console.error('Ошибка при получении баланса:', error.message);
        });
  • Сообщение о корректности решения капчи:

    const captchaId = 'ID_КАПЧИ'; // Замените на реальный ID капчи
    
    solver.report(captchaId, true)  // true, если капча решена верно; false, если неверно
        .then(() => {
            console.log('Отчёт отправлен успешно.');
        })
        .catch(error => {
            console.error('Ошибка при отправке отчёта:', error.message);
        });

5. Обработка ошибок

Рекомендуется использовать блоки try-catch или методы .catch() для обработки возможных ошибок:

solver.imageCaptcha({ body: `data:image/jpeg;base64,${imageData}` })
    .then(response => {
        console.log('Капча решена:', response.data);
    })
    .catch(error => {
        if (error.response) {
            // Ошибка, связанная с ответом сервера
            console.error('Ошибка сервера:', error.response.data);
        } else if (error.request) {
            // Ошибка, связанная с запросом
            console.error('Ошибка запроса:', error.request);
        } else {
            // Другая ошибка
            console.error('Ошибка:', error.message);
        }
    });

Для получения дополнительной информации обратитесь к документации 2Captcha по работе с JavaScript.

Python

Для решения простых капч изображений (картинок) с использованием Python выполните следующие шаги:

1. Установка

Убедитесь, что у вас установлен Python. Затем выполните команду:

pip install 2captcha-python

2. Конфигурация

Импортируйте необходимый модуль и создайте экземпляр класса TwoCaptcha с вашим API-ключом:

from twocaptcha import TwoCaptcha

solver = TwoCaptcha('ВАШ_API_КЛЮЧ')

При необходимости настройте дополнительные параметры:

config = {
    'server':           '2captcha.com',
    'apiKey':           'ВАШ_API_КЛЮЧ',
    'softId':           123,
    'callback':         'https://your.site/result-receiver',
    'defaultTimeout':   120,
    'recaptchaTimeout': 600,
    'pollingInterval':  10,
}
solver = TwoCaptcha(**config)

3. Решение капчи

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

try:
    result = solver.normal('path/to/captcha.jpg')
    print('Капча решена:', result['code'])
except Exception as e:
    print('Ошибка:', e)

Где 'path/to/captcha.jpg' — путь к изображению капчи.

4. Дополнительные методы

  • Получение баланса аккаунта:

    try:
        balance = solver.balance()
        print('Баланс:', balance)
    except Exception as e:
        print('Ошибка при получении баланса:', e)
  • Сообщение о корректности решения капчи:

    try:
        solver.report('ID_КАПЧИ', True)  # True, если капча решена верно; False, если неверно
    except Exception as e:
        print('Ошибка при отправке отчёта:', e)

5. Обработка ошибок

Рекомендуется использовать блоки try-except для обработки возможных ошибок:

try:
    result = solver.normal('path/to/captcha.jpg')
except ValidationException as e:
    print('Ошибка в параметрах:', e)
except NetworkException as e:
    print('Ошибка сети:', e)
except ApiException as e:
    print('Ошибка API:', e)
except TimeoutException as e:
    print('Капча не решена вовремя:', e)
except Exception as e:
    print('Неизвестная ошибка:', e)

Для получения дополнительной информации обратитесь к документации 2Captcha по работе с Python.

Итоги

Капчи остаются одним из самых сложных препятствий при сборе данных из открытых источников и мешают доступности. Поэтому, часто важно найти способов автоматического обхода.

В этой статье рассмотрены способы решения на разных языках программирования. Если вы заинтересованы в решениях в сфере распознавания, таких как системы для обучения моделей, можете обращаться за дополнительной информацией.