Scarnox · Blog

GeeTest капча пояснено: як працює і як її розв'язувати

GeeTest — це провайдер капчі, віджети якого просять відвідувача виконати візуальне завдання: перетягнути фрагмент пазла в проріз, клікнути набір іконок у заданому порядку або пройти коротке рух слайдера. Він поширений на сайтах електронної комерції, сторінках входу та бекендах застосунків у багатьох регіонах. Це також одна з родин капч, які Scarnox ще не розв'язує. Цей посібник пояснює, як працює GeeTest, чому автоматизувати його складніше, ніж віджет на основі токена, які підходи використовують люди загалом і який статус підтримки Scarnox зараз.

Що GeeTest робить на сторінці

Капча GeeTest зазвичай завантажується у три кроки:

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

Третій крок важливий. Правдоподібне на вигляд значення недостатнє, бо сервер перевіряє результат, прив'язаний до одного виклику, і цей результат спливає. Тому значення, скопійоване з іншої сесії, не спрацює, і повторне відтворення старого результату теж не допоможе.

Чому GeeTest складніший за віджет на основі токена

З PopularCaptcha сторінці потрібен один рядок-токен, і один запит повертає його. GeeTest відрізняється трьома моментами:

Через це розв'язання GeeTest — багатокроковий процес: отримати виклик, знайти цілі на зображенні, створити рух, відправити його і прочитати вердикт. Кожен крок може провалитися, а виклик спливає, якщо ви надто довго чекаєте між кроками.

Загальні підходи

Люди, які автоматизують сторінки GeeTest, зазвичай використовують один із трьох підходів. Жоден з них не є короткою дорогою, і кожен має свою ціну:

Який би варіант ви не обрали, тримайте межі чесними: автоматизуйте процеси, якими володієте, тестові середовища, якими маєте право користуватися, або публічні дані, які маєте право збирати.

Пошук ідентифікатора капчі

Для початку код не потрібен. Відкрийте DevTools, перезавантажте сторінку і пошукайте у вкладці Network geetest або gt. Перший запит, який завантажує віджет, зазвичай показує ідентифікатор капчі. Невеликий скрипт може його записувати, що корисно, коли хочете помітити, що сторінка змінила свій віджет:

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 їх не підтримує.

Наступні кроки