Как автоматизировать решение GeeTest капчи в Puppeteer (JavaScript)
В этом примере показано, как автоматизировать решение GeeTest капчи с помощью JavaScript библиотеки Puppeteer. Для решения капчи в этом примере используется сервис 2captcha.com. В этом примере демонстрируется как решать капчу GeeTest, расположенную на демо странице. Для работы примера вам необходима учетная запись 2captcha.com.
Особенности обход капчи GeeTest
Капча GeeTest это капча основанная на токенах, при решении капчи генерируется токен, далее сгенерированный токер отправляется на проверку для верификации. Если токен не коррекный, то капча не будет пройдена.
Описание особенностей решения капчи GeeTest из документации 2captcha:
Важно: для каждого запроса к API 2captcha необходимо получать новое значение challenge. Если капча уже была загружена на странице, то значение challenge является недействительным. Вам необходимо изучить запросы, которые выполняются при загрузке страницы и найти тот, в котором возвращается значение challenge. Затем, для получения нового challenge вам нужно каждый раз выполнять данный запрос и парсить его.
Алгоритм действий для решения GeeTest капчи в Puppeteer:
- Поиск параметров капчи challenge, gt, api_server.
- Отправить капчу для решения в сервис 2captcha
- Получить решение капчи(токен)
- Открыть страницу с капчей и применить полученный ответ
Шаг №1 - Поиск параметров капчи
Для отправки капчи в сервис, необходимо узнать три параметра капчи: challenge, gt, api_server.
api_server - домен API (обязателен для некоторых сайтов), по умолчанию равен 'api.geetest.com'
gt - статический параметр.
сhallenge - динамический параметр.
Для поиска параметров challenge и gt необходимо изучить запросы которые делает капча на странице.
В частности необходимо найти запрос с помощью которого виджет капчи GeeTest получает свежий параметр challenge.
Открываем страницу https://2captcha.com/demo/geetest
Открываем DevTools, на вкладке Network включаем отображение Fetch/XHR запросов, и перезагружаем страницу.
Далее видим, что после перезагрузки появилось два запроса, проверяем ответы на запросы и находим необходимый ответ, в котором содержаться параметры challenge и gt. Теперь перед каждой отправкой капчи, необходимо делать идентичный запрос, что бы получать свежий параметр challenge.
Шаг №2 - Отправить капчу для решения в сервис 2captcha
Отправляем капчу с найденными параметрами:
Шаг №3 - Получить решение капчи(токен)
Решение капчи представляет из себя три значения geetest_challenge, geetest_validate, geetest_seccode
Шаг №4 - Открыть страницу с капчей и применить полученный ответ
Далее необходимо открыть страницу с капчей и применить полученное решение на странице. Полученные значения необходимо вставить в соответствующие html элементы GeeTest капчи на странице.
Готово. После этого можно переходить к выполнению действий на странице. В этом примере после этого происходит нажатие на кнопку "Проверить".
Исходный код (GitHub) примера решения GeeTest captcha в Puppeteer.
Полезные ссылки:
1. Документация по отправке GeeTest капчи.
2. Демо страница c GeeTest с описанием решения.
3. Подробнее о решении GeeTest