27 Март 2020

Обход hCaptcha с RuCaptcha API

Недавно Cloudflare добавили поддержку hCaptcha на странице проверки ботов и это вызвало заметный рост интереса к hCaptcha.
 
Что же такое hCaptcha?
hCaptcha позиционирует себя как легкую замену ReCaptcha от Google. На самом деле это клон ReCaptcha и даже в исходном коде и названиях элементов можно найти много отсылок к ReCaptcha.
Как известно, Google использовали ReCaptcha для разметки данных, и, результатом этого стал огромный датасет Open Images Dataset, размеченный миллиардами людей, и, каждый пользователь Интернет внес свой небольшой вклад в это.
hCaptcha взяли эту идею и запустили сервис по разметке данных, который доступен всем, очень гибок и имеет широкие возможности по кастомизации под конкретные задачи. В результате с его помощью можно создавать датасеты для задач машинного обучения. И, на наш взгляд, hCaptcha делают хорошее дело.
Другая сторона hCaptcha - это сервис капчи для защиты от ботов. Как мы все хорошо знаем, если приложить некоторые усилия, то можно обойти любую защиту от ботов. RuCaptcha использует усилия множества людей, работников сервиса, чтобы обойти капчу. И в случае с hCaptcha мы думаем, что точно не вредим основной задаче этого сервиса - разметке данных, так как наши работники имеют большой опыт в решении подобных задач.
 
 
Обход hCaptcha
Сам процесс обхода этой капчи очень похож на обход ReCaptcha:
1. Вам нужно найти sitekey, который указан в свойсте data-sitekey тега script в HTML коде страницы.
2. Используя найденное значение sitekey и URL страницы, на которой отображается hCaptcha, отправить запрос к нашему API, как описано в документации к соответствующему методу
3. Поместить полученный от нас токен в поля с именем (аттрибут name) g-recaptcha-response и h-captcha-response.
4. Отправить форму.
 
Это можно легко сделать из браузера с помощью нескольких строк кода на javascript:
 
let submitToken = (token) => {
document.querySelector('[name=g-recaptcha-response]').innerText = token
document.querySelector('[name=h-captcha-response]').innerText = token
document.querySelector('.challenge-form').submit()
}
submitToken('TOKEN_STRING')
 
Или же вы можете составить соответствующий POST-запрос с нужными значениями.
Вот и всё.
 
Стоимость
Стоимость решения такая же, как и у ReCaptcha, 160 рублей за 1000 токенов.
Этот сайт использует cookie. Файлы cookie запоминают вас, поэтому мы можем предоставить вам персонализированные услуги. Подробнее.