Scarnox · Blog

Капча GeeTest: как она работает и как её решают

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

Что делает GeeTest на странице

Капча GeeTest обычно загружается в три шага:

  1. Страница подключает скрипт GeeTest и создаёт виджет с captcha ID. Во многих интеграциях этот ID передаётся как параметр gt.
  2. Виджет запрашивает у сервера GeeTest свежий челлендж. Челлендж включает значение challenge и изображения или позиции плиток, необходимые для пазла.
  3. Когда посетитель завершает задачу, виджет отправляет результат обратно на сайт. Бэкенд сайта затем проверяет этот результат у провайдера капчи, прежде чем принять форму.

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

Почему GeeTest сложнее токен-виджета

С PopularCaptcha странице нужна одна строка-токен, и один запрос возвращает её. GeeTest отличается тремя вещами:

Поэтому решение GeeTest — многошаговая задача: получить челлендж, найти цели на изображении, сформировать движение, отправить его и прочитать вердикт. Каждый шаг может провалиться, а челлендж истекает, если вы ждёте слишком долго между шагами.

Общие подходы

Люди, которые автоматизируют страницы GeeTest, обычно используют один из трёх подходов. Ни один из них не является коротким путём, и у каждого есть издержки:

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

Поиск captcha ID

Для начала кода не нужно. Откройте DevTools, перезагрузите страницу и поищите во вкладке Network geetest или gt. Первый запрос, который загружает виджет, обычно показывает captcha ID. Небольшой скрипт может его записывать, это полезно, когда хочется заметить, что страница поменяла виджет:

import re
import requests

html = requests.get("https://example.com/login", timeout=30).text
match = re.search(r"gt['\"]?\s*[:=]\s*['\"]([a-f0-9]{32})['\"]", html)
print("captcha id:", match.group(1) if match else "not found")

Шаблон выше ищет 32-символьное шестнадцатеричное значение рядом с gt. Провайдеры меняют разметку, поэтому считайте его отправной точкой и проверяйте результат на странице, которую тестируете.

Статус поддержки в Scarnox

Будьте точны при планировании проекта:

Если вашему проекту нужен GeeTest прямо сейчас, практичный путь — самостоятельно построить шаги с браузером и изображениями для страниц, которые вам разрешено тестировать, и держать код готовым к переключению на API, когда поддержка выйдет. Пока вы можете создать аккаунт и начать с пробного баланса, карта не нужна. Так у вас будет рабочий поток PopularCaptcha для тестов и место, куда позже подключить GeeTest. Актуальные тарифы — на странице цен.

Легитимное использование

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

Что дальше