5 место Автосабмит hCaptcha / Autosubmit hCaptcha

amyboose

Client
Регистрация
21.04.2016
Сообщения
2 311
Реакции
1 192
Баллы
113
Добрый день всем

Часто на форуме ищут hCaptcha, особенно она мешает на сайтах с Cloudflare.
Сам я не знаю javascript, поэтому этот шаблон стал возможен благодаря моей совместной работе с rucaptcha.com.

82417

1) В первую очередь при создании окна страницы выполняется следующий javascript (добавляем javascript, выполнить - при создании окна, количество - один раз):
JavaScript:
Развернуть Свернуть Копировать
window.myInterval = setInterval(() => {
    if (window.hcaptcha) {
        console.log('hcaptcha available, lets redefine render method')
        // if hcaptcha object is defined, we save the original render method into window.originalRender
        window.originalRender = hcaptcha.render
        // then we redefine hcaptcha.render method with our function
        window.hcaptcha.render = (container, params) => {
            console.log(container)
            console.log(params)
            // storing hcaptcha callback globally
            window.hcaptchaCallback = params.callback
            // returning the original render method call
            return window.originalRender(container, params)
        }
        clearInterval(window.myInterval)
    } else {
        console.log('hcaptcha not available yet')
    }
}, 10)

Скрин для тех, кто не совсем понял:
82450

2) Далее надо открыть страницу с сайтом

3) Получаем токен hCaptcha. Можете использовать любой удобный вам способ

В шаблоне я привел 2 примера кубиков - для rucaptcha.com и для Capmonster.Cloud.
В настройках при отправке запроса на решение токена поддерживаются следующие функции, помимо основных:
  • отправка прокси
  • параметр data
  • выбор типа - invisible или нет
  • отправка юзерагента
Для подключения моей библиотеки в свой шаблон не нужно создавать проект в проекте, только выполните следующие действия:
A. Копируем библиотеки (файлы .dll) в папку ExternalAssemblies
B. Добавляем библиотеки через "Добавить -> Ссылки из GAC" и далее нажимаем на иконку и поочередно добавляем все библиотеки с пункта 1 из папки ExternalAssemblies в свой проект
C. Нажимаем "Добавить -> Директивы using и общий код" и в них на вкладке "Директивы using" вставляем следующие директивы:
C#:
Развернуть Свернуть Копировать
using NSED.RecognitionServices.Rucaptcha;
using NSED.RecognitionServices.CaptchaSettings;
using NSED.Proxy;
D. Создаем кубик C# кода и вставляем туда следующий код:
C#:
Развернуть Свернуть Копировать
//Настраиваем параметры hCaptcha
string proxyString = instance.GetProxy();
WebProxy proxy = proxyString == "" ? null : new WebProxy(proxyString);

hCaptchaSettings settings = new hCaptchaSettings()
{
    //Раскомментировать следующую строку, если нужно отправлять задание вместе с прокси
    //Proxy = proxy,
    Data = null,
    PageUrl = new Uri("https://lessons.zennolab.com/captchas/hcaptcha/nosubmit.php?level=moderate"),
    Invisible = false,
    SiteKey = "d391ffb1-bc91-4ef8-a45a-2e2213af091b",
    //Юзерагент тоже можете раскомментировать при желании
    //У меня разгадка CloudFlare cработала без отправки юзерагента
    //UserAgent = project.Profile.UserAgent,
};
string apiKey = NSED.Browser.Support.SupportClass.GetServiceApiKey("Rucaptcha");
if (apiKey == null)
    throw new Exception("Ключ для сервиса Rucaptcha не найден");
RucaptchaService hc = new RucaptchaService(apiKey);
hCaptchaTask task = new hCaptchaTask(settings, hc);

//Получаем токен
task.Recognize();
project.Variables["token"].Value = task.Token;

4) Выполняем финальный callback
C#:
Развернуть Свернуть Копировать
string token = project.Variables["token"].Value;

//устанавливаем значения токена в текстовые поля
instance.ActiveTab.FindElementByXPath("//textarea[@name='g-recaptcha-response']", 0)
    .SetValue(token, "None");
HtmlElement heHcaptchaTB = instance.ActiveTab.FindElementByXPath("//textarea[@name='h-captcha-response']", 0);
if (heHcaptchaTB.IsVoid)
    throw new Exception("Не найдено поле для вставки токена");
heHcaptchaTB.SetValue(token, "None");


//Выполняем callback функцию
string script = $@"
    hcaptcha.getResponse = () => '{token}';
    window.hcaptchaCallback('{token}');";
instance.ActiveTab.MainDocument.EvaluateScript(script, true);

Важные замечания:
1) К шаблону идет библиотека около 80 Mb, меньше сделать по размеру я её не могу, так как это целый комплекс из различного функционала для работы с Zennoposter и не только
2) Rucaptcha использует тот же код в своем расширении и расширение работает без проблем.
3) В Cloudflare тоже работает, но не всегда. Всё зависит от токена - иногда у меня приходил неверный токен, когда я слал запрос с юзерагентом в рукапчу. Как только отключил отправку юзерагента, то Cloudflare пропустил.
4) Если хотите использовать мой метод получения токена, не забывайте добавлять библиотеки в папку ExternalAssemblies, ссылки в GAC и директивы using. В противном случае достаточно просто скопировать первый и последний кубики шаблона.
 
Номер конкурса шаблонов
  1. Восьмой конкурс шаблонов
Уровень сложности
Продвинутый
Категория
  1. Другое

Вложения

Последнее редактирование:
хороший шаблон, да видимо не для всех :bk:

Посмотреть вложение 82445
Там достаточно добавить первый и последний кубики вставить в свой шаблон, код предоставлен.
Ещё в тему я добавил шаблон с поддержкой старых версий Zennoposter. Не уверен, что открывается
есть повод обновиться =)
Возможно старая версия поможет кому-то
 
добавил пояснительный скрин
так выделил же нужное. загружать скрипт при загрузки страницы, а не при создании окна.
так то вроде оба режима работают, но загрузка страницы логически понятна :bk:
 
Все хорошо! Но... всё же исходники бро на конкурсе - это святое!
 
  • Спасибо
Реакции: dmitrii.l
@BAZAg в исходниках по сути лишь отправка капчи на разгадывание. Ничего интересного, одним словом. Вся фишка статьи в js функции, которая перехватывает callback и достает его "наружу".
 
@amyboose , не знаешь, в чём может быть проблема (это при добавлении библиотеки в ссылках из GAC)?
Посмотреть вложение 82678
1) Ошибка Zennoposter. Проверить можно установкой версии 7.4.0.2. Также причина может быть в том, что Zennoposter использует новые библиотеки ZennoLab.CommandCenter.dll и ZennoLab.InterfacesLibrary.dll. Решение есть - надо перекомпилировать под новые библиотеки, но пока версия 7.5 содержит кучу багов я не могу перекомпилировать и у самого нет обновы на 7.5 пока ещё
2) Твои библиотеки конфликтуют с моими, от которых зависит ZennoEmulator. Проверить можно путем временного перемещения всех библиотек из папки External Assemblies и помещения в External Assemblies только моих библиотек.
 
  • Спасибо
Реакции: volody00
К сожалению, решение не вышло универсальным. Так, на рамблере сабмит не отправляет (а может у меня руки кривые). Никак я не могу понять, как же его всё-таки отправлять. Сколько раз подступался, так и не смог понять эту кухню до конца. Но всё равно спасибо за статью
 
К сожалению, решение не вышло универсальным. Так, на рамблере сабмит не отправляет (а может у меня руки кривые). Никак я не могу понять, как же его всё-таки отправлять. Сколько раз подступался, так и не смог понять эту кухню до конца. Но всё равно спасибо за статью
Попробуй в пункте выполнять изменить "один раз" на "всё время"
 
Попробуй в пункте выполнять изменить "один раз" на "всё время"
Не помогло (ошибка на последней строке "hcaptcha is not defined"). Но может рамблер сам по себе кривой, ибо даже руками не даёт зарегаться. Больше сайтов не припомню. Как попадется попробую. На zennolab всё отлично гадает
 
1) Ошибка Zennoposter. Проверить можно установкой версии 7.4.0.2. Также причина может быть в том, что Zennoposter использует новые библиотеки ZennoLab.CommandCenter.dll и ZennoLab.InterfacesLibrary.dll. Решение есть - надо перекомпилировать под новые библиотеки, но пока версия 7.5 содержит кучу багов я не могу перекомпилировать и у самого нет обновы на 7.5 пока ещё
2) Твои библиотеки конфликтуют с моими, от которых зависит ZennoEmulator. Проверить можно путем временного перемещения всех библиотек из папки External Assemblies и помещения в External Assemblies только моих библиотек.

Версия 7.4.0.0 тоже самое :( ZennoEmulator.dll тупо не добавляется в GAC
 
Последнее редактирование:
При выполнении на 7.5.0.0

82775
 
отправил в личку, так как телегу не нашел
В зеннопостере 7.5.0.0 изменилась как минимум одна библиотека в плане внутренних параметров. Просто перекомпилировать не получится, изменения займут некоторое время
 
В зеннопостере 7.5.0.0 изменилась как минимум одна библиотека в плане внутренних параметров. Просто перекомпилировать не получится, изменения займут некоторое время
хорошо, ожидаем
 
закинул файлы с архива в родную папку зенки, зенка перестала работать (открываться)
Проверь этот пункт
A. Копируем библиотеки (файлы .dll) в папку ExternalAssemblies
 
  • Спасибо
Реакции: Dendi
Добрый день amyboose у меня вопрос по поводу вашего решение hcaptcha в чем может быть причина что на сайте каторый я хочу пройти капчу выдает последний кубик вот такую ошибку у меня ZP 7.5
Выполнение действия CSharp OwnCode: Выполняем callback. EvaluateScriptAsync: Uncaught TypeError: window.hcaptchaCallback is not a function
Сбойное действие: Выполняем callback
Сайт https://bigbtc.win/
 
Добрый день amyboose у меня вопрос по поводу вашего решение hcaptcha в чем может быть причина что на сайте каторый я хочу пройти капчу выдает последний кубик вот такую ошибку у меня ZP 7.5
Выполнение действия CSharp OwnCode: Выполняем callback. EvaluateScriptAsync: Uncaught TypeError: window.hcaptchaCallback is not a function
Сбойное действие: Выполняем callback
Сайт https://bigbtc.win/
Надо в Кубике "Получаем токен CapMonsterCloud", поменять PageUrl и SiteKey, после этого кубик с Callback выполняется корректно
 
Надо в Кубике "Получаем токен CapMonsterCloud", поменять PageUrl и SiteKey, после этого кубик с Callback выполняется корректно
привет по пробовал что рекомендовали таже самая ошибка
 

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)