GeeTest капча пояснено: як працює і як її розв'язувати
GeeTest — це провайдер капчі, віджети якого просять відвідувача виконати візуальне завдання: перетягнути фрагмент пазла в проріз, клікнути набір іконок у заданому порядку або пройти коротке рух слайдера. Він поширений на сайтах електронної комерції, сторінках входу та бекендах застосунків у багатьох регіонах. Це також одна з родин капч, які Scarnox ще не розв'язує. Цей посібник пояснює, як працює GeeTest, чому автоматизувати його складніше, ніж віджет на основі токена, які підходи використовують люди загалом і який статус підтримки Scarnox зараз.
Що GeeTest робить на сторінці
Капча GeeTest зазвичай завантажується у три кроки:
- Сторінка підключає скрипт GeeTest і створює віджет з ідентифікатором капчі. У багатьох інтеграціях цей ідентифікатор передається як параметр
gt. - Віджет запитує у сервера GeeTest свіжий виклик. Виклик містить значення
challengeі зображення або положення плиток, потрібні для головоломки. - Коли відвідувач завершує завдання, віджет надсилає результат назад на сайт. Бекенд сайту потім перевіряє цей результат у провайдера капчі, перш ніж прийняти форму.
Третій крок важливий. Правдоподібне на вигляд значення недостатнє, бо сервер перевіряє результат, прив'язаний до одного виклику, і цей результат спливає. Тому значення, скопійоване з іншої сесії, не спрацює, і повторне відтворення старого результату теж не допоможе.
Чому GeeTest складніший за віджет на основі токена
З PopularCaptcha сторінці потрібен один рядок-токен, і один запит повертає його. GeeTest відрізняється трьома моментами:
- Вихід — це результат завдання, а не один рядок. Сайт очікує кілька значень, які належать одне одному, і всі вони мають походити з одного виклику.
- Виклик візуальний і позиційний. Солверу треба знайти, куди вставляється фрагмент пазла або які іконки збігаються, а потім створити рух, схожий на рух людини.
- Перевірки дивляться і на поведінку, а не лише на відповідь. Швидкість, траєкторія і час можна проаналізувати. Правильне положення, виконане роботизовано, може бути відхилене.
Через це розв'язання GeeTest — багатокроковий процес: отримати виклик, знайти цілі на зображенні, створити рух, відправити його і прочитати вердикт. Кожен крок може провалитися, а виклик спливає, якщо ви надто довго чекаєте між кроками.
Загальні підходи
Люди, які автоматизують сторінки GeeTest, зазвичай використовують один із трьох підходів. Жоден з них не є короткою дорогою, і кожен має свою ціну:
- Керувати справжнім браузером. Playwright або Selenium завантажують сторінку, а ваш скрипт рухає слайдер. Це найкраще працює на сайті, яким ви керуєте, або в тестовому середовищі, яке вам дозволено використовувати. Браузер справжній, але рух все одно має виглядати природно.
- Зіставлення зображень. Ваш код завантажує фон пазла, знаходить проріз за допомогою template matching (наприклад, з OpenCV) і обчислює відстань перетягування. Це часто найнадійніша частина самостійного налаштування, і вона ламається, коли провайдер змінює розташування зображення.
- Людина в циклі або сервіс розв'язання. Людина або керований сервіс розв'язує виклик і повертає результат. Scarnox планує запропонувати цей варіант для 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
Будьте чесними з цим, коли плануєте проєкт:
- Працює зараз: PopularCaptcha, proxyless і з власним проксі.
- Скоро: GeeTest, reCAPTCHA v2 і v3, Cloudflare Turnstile, AWS WAF і Arkose. Не будуйте промисловий процес, який залежить від розв'язання GeeTest, доки його не буде позначено як робочий.
Якщо вашому проєкту GeeTest потрібен уже зараз, практичний шлях — самостійно побудувати кроки з браузером і зображеннями для сторінок, які ви маєте право тестувати, і тримати код готовим до переходу на API, коли підтримка з'явиться. А тим часом можна створити обліковий запис і почати з безкоштовного пробного кредиту, картка не потрібна. Так ви отримаєте робочий потік PopularCaptcha для тестів і місце, куди потім підключити GeeTest. Актуальні тарифи — на сторінці цін.
Легітимне використання
- Тестування власного процесу входу або оформлення замовлення, де капча блокує автоматизовані регресійні тести.
- Перевірки доступності, які підтверджують, що відвідувач, який не може розв'язати візуальну головоломку, має інший шлях завершити форму.
- Моніторинг сайту, який ви маєте дозвіл спостерігати, наприклад перевірка, що віджет і далі завантажується після деплою.
Не використовуйте автоматизацію капчі, щоб створювати фейкові облікові записи, атакувати форму входу або скуповувати обмежений товар. Ці дії порушують правила більшості сайтів, і Scarnox їх не підтримує.