Эта статья была полезной?
Как обойти и решить капчу 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 сервис поддерживает два типа задач:
GeeTestTaskProxyless— использует внутренние прокси 2Captcha, не требует настройки прокси с вашей стороны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
pip3 install twocaptcha requests
2.2. Получение API-ключа
- Зарегистрируйтесь на 2captcha.com
- Перейдите в настройки аккаунта
- Скопируйте API-ключ
Рекомендуется хранить ключ в переменной окружения для безопасности:
bash
# Linux/macOS
export APIKEY_2CAPTCHA=ваш_ключ_здесь
# Windows
set APIKEY_2CAPTCHA=ваш_ключ_здесь
3. Анализ страницы и извлечение параметров
3.1. Определение наличия капчи
GeeTest V4 отображается как интерактивный виджет, часто со слайдером или выбором изображений. Логотип GeeTest обычно находится в нижней части виджета.
3.2. Поиск captcha_id в исходном коде
Для извлечения captcha_id:
- Откройте DevTools в браузере (клавиша F12)
- Перейдите на вкладку Elements
- Найдите элемент с атрибутом
data-geetestили вызовinitGeetest4
Пример HTML:
html
<div id="geetest-captcha" data-geetest="e392e1d7fd421dc63325744d5a2b9c73"></div>
Значение атрибута data-geetest — это и есть captcha_id.
3.3. Анализ сетевых запросов
- В DevTools перейдите на вкладку Network
- Обновите страницу с капчей
- Отфильтруйте запросы по
geetestилиcaptcha
Ключевые запросы:
GET https://gcaptcha4.geetest.com/load— загрузка параметров капчиPOSTзапрос с решением на целевой сайт
3.4. Структура ответа сервера
После решения капчи сервис возвращает четыре параметра:
json
{
"lot_number": "e6c3bed2854f41f880662c48afff5dcb",
"pass_token": "fad5eb52fc83bf7617402fcccfb211a21e0aa1d1044",
"gen_time": "1693924478",
"captcha_output": "fN36ufW6cQN4SQ-JRDQC70nSq9UcQBg=="
}
Эти значения необходимо передать на целевой сайт для верификации.
4. Реализация решения на Python
4.1. Полный пример кода с asyncio
python
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
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
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
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_numberpass_tokengen_timecaptcha_output
Пример отправки решения на целевой сайт:
python
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
print(f"captcha_id: {captcha_id_value}")
print(f"url: {target_url}")
print(f"Ответ от api.2captcha.com: {result}")
7. Дополнительные ресурсы
- Песочница: включить режим — тестирование API без написания кода
- Python SDK: GeeTest V4 в репозитории 2captcha-python — примеры кода
- API документация: общая для обоих типов — спецификация эндпоинтов
- Поддержка: создать тикет — помощь по техническим вопросам
Примеры кода на других языках:
8. Контрольный список перед запуском
- Установлены пакеты
twocaptchaиrequests - API-ключ указан корректно и имеет положительный баланс
- Параметр
captcha_idизвлечён из исходного кода целевого сайта - Указан корректный
websiteURL— полная ссылка на страницу с капчей - При использовании прокси проверены его данные и доступность
- Настроены адекватные таймауты (
defaultTimeout,pollingInterval) - Скрипт протестирован в режиме отладки перед запуском в продакшене
- Реализована обработка ошибок и повторные попытки
- Проверен формат отправки решения на целевой сайт
Заключение
GeeTest V4 упрощает интеграцию за счёт отсутствия необходимости извлекать динамический параметр challenge. Представленное в руководстве решение на основе Python и библиотеки twocaptcha обеспечивает надёжное прохождение капчи с минимальными усилиями.
Ключевые рекомендации:
- Всегда проверяйте актуальность
captcha_idперед отправкой задачи - Используйте прокси для повышения успешности решения
- Настраивайте адекватные таймауты под вашу нагрузку
- Реализуйте механизм повторных попыток для обработки временных сбоев
- Корректно передавайте все четыре параметра решения на целевой сайт
Интеграция с 2Captcha позволяет сосредоточиться на логике вашего приложения, делегируя решение капчи специализированному сервису. При соблюдении рекомендаций по настройке окружения, извлечению параметров и обработке ошибок вы сможете стабильно автоматизировать взаимодействие с защищёнными сайтами.