Логотип «2Captcha»Перейти на главную страницу
Туториалы по обходу капчи

Эта статья была полезной?

Как обойти и решить капчу GeeTest V4 автоматически

Введение

Это руководство предназначено для разработчиков, которые работают с сайтами, защищёнными капчей GeeTest версии 4, и нуждаются в автоматизации её прохождения. В материале мы разберём технические особенности GeeTest V4, методы извлечения необходимых параметров и практические примеры интеграции с сервисом 2Captcha.

Необходимые инструменты:

  • Python 3.8 или выше
  • Библиотеки: twocaptcha, asyncio
  • API-ключ от 2Captcha
  • Рабочий прокси (рекомендуется для стабильности)

1. Общие сведения о капче GeeTest V4

1.1. Описание технологии

GeeTest V4 — это современная система защиты от автоматизированного доступа, использующая улучшенные алгоритмы поведенческого анализа и интерактивные задачи. В отличие от версии 3, V4 упрощает интеграцию: не требуется извлекать динамический параметр challenge, что снижает сложность подготовки запроса и повышает стабильность решения.

1.2. Ключевые параметры GeeTest V4

Параметр Описание Статус
captcha_id Идентификатор капчи, статическое значение для сайта Обязательно
websiteURL Полный URL страницы, где загружается капча Обязательно
proxy Данные прокси-сервера Опционально, но рекомендуется

1.3. Типы задач в API 2Captcha

Для решения капч GeeTest V4 сервис поддерживает два типа задач:

  1. GeeTestTaskProxyless — использует внутренние прокси 2Captcha, не требует настройки прокси с вашей стороны
  2. GeeTestTask — требует указания собственного прокси в параметрах задачи

1.4. Отличия GeeTest V3 и V4

Параметр GeeTest V3 GeeTest V4
Идентификатор gt (статический) captcha_id (статический)
Динамический параметр challenge (требуется извлечение) Не требуется
Метод API solver.geetest() solver.geetest_v4()
Возвращаемые данные geetest_challenge, geetest_validate, geetest_seccode lot_number, pass_token, gen_time, captcha_output
Сложность интеграции Средняя Низкая

2. Подготовка окружения

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

Установите необходимые пакеты через pip:

bash Copy
pip3 install twocaptcha requests

2.2. Получение API-ключа

  1. Зарегистрируйтесь на 2captcha.com
  2. Перейдите в настройки аккаунта
  3. Скопируйте API-ключ

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

bash Copy
# Linux/macOS
export APIKEY_2CAPTCHA=ваш_ключ_здесь

# Windows
set APIKEY_2CAPTCHA=ваш_ключ_здесь

3. Анализ страницы и извлечение параметров

3.1. Определение наличия капчи

GeeTest V4 отображается как интерактивный виджет, часто со слайдером или выбором изображений. Логотип GeeTest обычно находится в нижней части виджета.

3.2. Поиск captcha_id в исходном коде

Для извлечения captcha_id:

  1. Откройте DevTools в браузере (клавиша F12)
  2. Перейдите на вкладку Elements
  3. Найдите элемент с атрибутом data-geetest или вызов initGeetest4

Пример HTML:

html Copy
<div id="geetest-captcha" data-geetest="e392e1d7fd421dc63325744d5a2b9c73"></div>

Значение атрибута data-geetest — это и есть captcha_id.

3.3. Анализ сетевых запросов

  1. В DevTools перейдите на вкладку Network
  2. Обновите страницу с капчей
  3. Отфильтруйте запросы по geetest или captcha

Ключевые запросы:

  • GET https://gcaptcha4.geetest.com/load — загрузка параметров капчи
  • POST запрос с решением на целевой сайт

3.4. Структура ответа сервера

После решения капчи сервис возвращает четыре параметра:

json Copy
{
  "lot_number": "e6c3bed2854f41f880662c48afff5dcb",
  "pass_token": "fad5eb52fc83bf7617402fcccfb211a21e0aa1d1044",
  "gen_time": "1693924478",
  "captcha_output": "fN36ufW6cQN4SQ-JRDQC70nSq9UcQBg=="
}

Эти значения необходимо передать на целевой сайт для верификации.


4. Реализация решения на Python

4.1. Полный пример кода с asyncio

python Copy
import asyncio
import os
import sys

from twocaptcha import AsyncTwoCaptcha

# API-ключ из переменной окружения или напрямую
api_key = os.getenv('APIKEY_2CAPTCHA', 'YOUR_API_KEY')

# Конфигурация решателя
config = {
    'server': 'api.2captcha.com',  # Можно также указать 'rucaptcha.com'
    'apiKey': api_key,
    'softId': 123,  # ID вашего приложения (опционально)
    'defaultTimeout': 120,    # Таймаут 2 минуты
    'recaptchaTimeout': 600,  # Таймаут для reCAPTCHA (не используется для GeeTest)
    'pollingInterval': 10,    # Интервал опроса результата
}

solver = AsyncTwoCaptcha(**config)

async def solve_captcha():
    try:
        # Отправка задачи GeeTest V4 на решение
        return await solver.geetest_v4(
            captcha_id='e392e1d7fd421dc63325744d5a2b9c73',  # Статический ID капчи
            url='https://example.com/demo/geetest-v4',        # URL страницы с капчей
            # Прокси (раскомментируйте при необходимости):
            # proxy={
            #     'type': 'HTTPS',
            #     'uri': 'login:password@IP_address:PORT'
            # }
        )
    except Exception as e:
        print(f"Ошибка при решении капчи: {e}")
        sys.exit(1)

if __name__ == '__main__':
    result = asyncio.run(solve_captcha())
    print('Решение получено:', result)

4.2. Пояснения к коду

Конфигурация решателя:

  • server — указывает на какой сервер отправлять запросы (2captcha.com или rucaptcha.com)
  • defaultTimeout=120 — максимальное время ожидания решения
  • pollingInterval=10 — как часто проверять статус задачи
  • softId — идентификатор вашего приложения (опционально, для статистики)

Метод geetest_v4():

  • Принимает captcha_id и url как обязательные параметры
  • Не требует динамического challenge, в отличие от V3
  • Возвращает словарь с параметрами: lot_number, pass_token, gen_time, captcha_output

Обработка исключений:

  • Блок try/except перехватывает сетевые ошибки и ошибки API
  • При сбое скрипт выводит сообщение об ошибке и завершается с кодом 1

Преимущества V4:

  • Упрощённая интеграция за счёт отсутствия динамического параметра
  • Меньше шагов для подготовки запроса
  • Более стабильное поведение на разных сайтах

5. Альтернативные методы и дополнительные настройки

5.1. Синхронная версия библиотеки

Если вы не используете asyncio, можно применить синхронный клиент:

python Copy
from twocaptcha import TwoCaptcha

solver = TwoCaptcha(api_key)

result = solver.geetest_v4(
    captcha_id='e392e1d7fd421dc63325744d5a2b9c73',
    url='https://example.com/demo/geetest-v4'
)

5.2. Настройка прокси

Использование прокси повышает устойчивость к блокировкам:

python Copy
proxy_config = {
    'type': 'HTTPS',
    'uri': 'login:password@1.2.3.4:8080'
}

result = await solver.geetest_v4(
    captcha_id='e392e1d7fd421dc63325744d5a2b9c73',
    url='https://example.com/demo/geetest-v4',
    proxy=proxy_config
)

Рекомендации по работе с прокси:

  • Используйте резидентные прокси соответствующего региона
  • Ротируйте прокси при множественных запросах
  • Проверяйте работоспособность прокси перед запуском

5.3. Обработка ошибок и повторные попытки

python Copy
import time

max_retries = 3
for attempt in range(max_retries):
    try:
        result = await solver.geetest_v4(...)
        break
    except Exception as e:
        print(f"Попытка {attempt + 1} не удалась: {e}")
        time.sleep(5)
else:
    print("Все попытки исчерпаны")

5.4. Использование полученного решения

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

Вам нужно найти запрос, который содержит данные решённой капчи, и воспроизвести его, подставив полученные параметры:

  • lot_number
  • pass_token
  • gen_time
  • captcha_output

Пример отправки решения на целевой сайт:

python Copy
import requests

# Параметры, полученные от 2Captcha
solution = result['code']  # или result['solution'] в зависимости от формата

# Заголовки запроса (адаптируйте под целевой сайт)
headers = {
    'Content-Type': 'application/json',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
}

# Данные для отправки
payload = {
    'lot_number': solution['lot_number'],
    'pass_token': solution['pass_token'],
    'gen_time': solution['gen_time'],
    'captcha_output': solution['captcha_output']
}

# Отправка решения
response = requests.post(
    'https://example.com/verify-captcha',
    headers=headers,
    json=payload
)

if response.status_code == 200:
    print("Капча успешно верифицирована")

6. Типичные ошибки и способы их устранения

Ошибка Возможная причина Решение
ERROR_WRONG_USER_KEY Неверный API-ключ Проверьте ключ в настройках аккаунта
ERROR_ZERO_BALANCE Недостаточно средств Пополните баланс на 2captcha.com
ERROR_CAPTCHA_UNSOLVABLE Капча не распознана Проверьте корректность captcha_id и url
ERROR_PROXY_CONNECT_REFUSED Прокси недоступен Проверьте данные прокси и его доступность
invalid captcha_id Неверный идентификатор капчи Извлеките актуальный captcha_id из исходного кода
timeout Превышено время ожидания Увеличьте defaultTimeout или проверьте статус сервиса
ERROR_BAD_PARAMETERS Некорректные параметры задачи Проверьте формат captcha_id и websiteURL

6.1. Отладка запросов

Для анализа проблем добавьте вывод промежуточных данных:

python Copy
print(f"captcha_id: {captcha_id_value}")
print(f"url: {target_url}")
print(f"Ответ от api.2captcha.com: {result}")

7. Дополнительные ресурсы

Примеры кода на других языках:


8. Контрольный список перед запуском

  • Установлены пакеты twocaptcha и requests
  • API-ключ указан корректно и имеет положительный баланс
  • Параметр captcha_id извлечён из исходного кода целевого сайта
  • Указан корректный websiteURL — полная ссылка на страницу с капчей
  • При использовании прокси проверены его данные и доступность
  • Настроены адекватные таймауты (defaultTimeout, pollingInterval)
  • Скрипт протестирован в режиме отладки перед запуском в продакшене
  • Реализована обработка ошибок и повторные попытки
  • Проверен формат отправки решения на целевой сайт

Заключение

GeeTest V4 упрощает интеграцию за счёт отсутствия необходимости извлекать динамический параметр challenge. Представленное в руководстве решение на основе Python и библиотеки twocaptcha обеспечивает надёжное прохождение капчи с минимальными усилиями.

Ключевые рекомендации:

  • Всегда проверяйте актуальность captcha_id перед отправкой задачи
  • Используйте прокси для повышения успешности решения
  • Настраивайте адекватные таймауты под вашу нагрузку
  • Реализуйте механизм повторных попыток для обработки временных сбоев
  • Корректно передавайте все четыре параметра решения на целевой сайт

Интеграция с 2Captcha позволяет сосредоточиться на логике вашего приложения, делегируя решение капчи специализированному сервису. При соблюдении рекомендаций по настройке окружения, извлечению параметров и обработке ошибок вы сможете стабильно автоматизировать взаимодействие с защищёнными сайтами.