Google ReCaptcha 2. Библиотека для разгадывания

Skrim

Client
Регистрация
23.03.2016
Сообщения
125
Благодарностей
86
Баллы
28


Ссылки
ВСЕ ССЫЛКИ
Скачать библиотеку + demo проект
Инструкция по подключению
Инструкция по использованию

Разгадывание
Библиотека может разгадывать через:
  • Сервис RuCaptcha.com (ModuleType.RuCaptcha)
  • Ручной ввод ZennoPoster (ModuleType.ZennoMonkeyEnter)
Разгадывание через RuCaptcha возможно следующими способами:
  • Обычное разгадывание через отправку изображения всей ReCaptcha (Standart)
  • Разгадывание в формате наложения сетки сервисом (ReCaptcha)
  • Полное разгадывание работниками посредством отправки идентификатора капчи (ReCaptchaNew).
Подробнее о способах разгадывания
Можно выбрать подходящий вам способ. По умолчанию используется ReCaptchaNew.​

Разработка, баги, предложения
По мере обновления библиотеки все изменения будут публиковаться в данной теме.
Если обнаружили баг или недоработку сообщайте тут как можно подробнее:
  • Какой использовался способ разгадывания
  • Сайт, на котором была замечена неприятность
  • Использовались ли прокси
  • Скрины процесса разгадывания
  • Любые другие замеченные особенности
Если капча не разгадывается, попробуйте разгадать самостоятельно через модуль ModuleType.ZennoMonkeyEnter.​

Любые предложения, обсуждения и вопросы оставляем тут.

 
Последнее редактирование:

deopl

Client
Регистрация
06.12.2011
Сообщения
659
Благодарностей
126
Баллы
43
заработок на партнерке рукапчи?
 

Skrim

Client
Регистрация
23.03.2016
Сообщения
125
Благодарностей
86
Баллы
28

deopl

Client
Регистрация
06.12.2011
Сообщения
659
Благодарностей
126
Баллы
43
Ну тогда понятно
пир во время чумы :(
 

Skrim

Client
Регистрация
23.03.2016
Сообщения
125
Благодарностей
86
Баллы
28

deopl

Client
Регистрация
06.12.2011
Сообщения
659
Благодарностей
126
Баллы
43
Выложил бы тогда решение, многие ищут
Тебе и спасибо сказали бы. А так на борьбу не похоже.
Вы тестируйте для меня, а я буду пользоваться. Может и продам потом
 

Skrim

Client
Регистрация
23.03.2016
Сообщения
125
Благодарностей
86
Баллы
28
Выложил бы тогда решение, многие ищут
Тебе и спасибо сказали бы. А так на борьбу не похоже.
Вы тестируйте для меня, а я буду пользоваться. Может и продам потом
Явно возникло недопонимание)
В первом посте выложено решение. Ссылка на скачивание библиотеки есть. Там же есть пример проекта ProjectMaker, в котом используется библиотека, а также инструкции как подключить и как использовать.

Тестировать я прошу не для себя, а для того, чтобы выявить баги, недоработки, устранить их и сделать полноценный продукт для разгадывания ReCaptcha, которым смогут пользоваться все. Никакой оплаты ни от кого я не прошу и просить не собираюсь.

На данный момент, чтобы разгадать капчу нужно сделать следующее:
1. Скачать библиотеку
2. Подключить к шаблону по инструкции
3. Разместить сниппет с разгадыванием в нужном месте (сниппет можно найти в стартпосте - пример использования)
4. Та-дам :-)
 
  • Спасибо
Реакции: AlexGoodWeb

deopl

Client
Регистрация
06.12.2011
Сообщения
659
Благодарностей
126
Баллы
43
В первом посте выложено решение. Ссылка на скачивание библиотеки есть. Там же есть пример проекта ProjectMaker, в котом используется библиотека, а также инструкции как подключить и как использовать.
а зачем она нужна если есть своя? родная зенно.
Тестировать я прошу не для себя, а для того, чтобы выявить баги, недоработки, устранить их и сделать полноценный продукт для разгадывания ReCaptcha, которым смогут пользоваться все. Никакой оплаты ни от кого я не прошу и просить не собираюсь.
а вдруг у тебя в библиотеке противоправные движения?
А вдруг потом захочешь оплату. Ведь планы сегодня одни, а завтра когда оттестят совсем другие будут?
 

Skrim

Client
Регистрация
23.03.2016
Сообщения
125
Благодарностей
86
Баллы
28
а зачем она нужна если есть своя? родная зенно.
Стандартный метод ZennoPoster'a не разгадывает ReCaptcha 2. Поэтому создают проекты для разгадывания, вроде этого или этого. Библиотека это тот же самый проект, просто упакован в 1 файл.
а вдруг у тебя в библиотеке противоправные движения?
Все, что делает библиотека - это отправляет капчу на RuCaptcha и получает ответ. Все это можно отследить любым сниффером, либо просто декомпилировать.
А вдруг потом захочешь оплату. Ведь планы сегодня одни, а завтра когда оттестят совсем другие будут?
Тогда бы я не стал говорить об этом в сообщении выше.
 

deopl

Client
Регистрация
06.12.2011
Сообщения
659
Благодарностей
126
Баллы
43
Стандартный метод ZennoPoster'a не разгадывает ReCaptcha 2.
на рукапчу отправляет
пару строк и на ручное отправит
Проблем нету ведь с этим.
Суть всей библиотеке это в использовании партнерки.
Поэтому создают проекты для разгадывания, вроде этого или этого. Библиотека это тот же самый проект, просто упакован в 1 файл.
Но они хоть открытые и люди могут пощупать, поучиться.
 

Skrim

Client
Регистрация
23.03.2016
Сообщения
125
Благодарностей
86
Баллы
28
на рукапчу отправляет
пару строк и на ручное отправит
Проблем нету ведь с этим.
Суть всей библиотеке это в использовании партнерки.

Но они хоть открытые и люди могут пощупать, поучиться.
В чем проблема? Пиши пару строк, отправляй. Все на добровольной основе, пользоваться никого не принуждаю. Библиотека создана не для обучения, но для удобства разгадывания капчи. Про партнерку сказал выше, добавить не чего.
 

deopl

Client
Регистрация
06.12.2011
Сообщения
659
Благодарностей
126
Баллы
43
А зачем писать?. Их выложили авторы открытых тем. Там все имеется
 

Skrim

Client
Регистрация
23.03.2016
Сообщения
125
Благодарностей
86
Баллы
28
А зачем писать?. Их выложили авторы открытых тем. Там все имеется
Так какие вопросы ко мне? Продукт выложен на добровольной основе для всех желающих. Изначально я пользовался сниппетом из первой темы, который со временем переделал в dll, т.к. отлаживать и исправлять намного удобнее. Сниппет из первой темы был написан мной, теперь же он доработан и скомпилирован для еще более удобного использования.

Помимо разгадывания капчи, используются дополнительные фичи. Например, есть возможность накладывать номера картинок для быстроты разгадывания через ZennoMonkeyEnter:

2016-08-25_14-35-52.png
 
Регистрация
08.07.2015
Сообщения
2 848
Благодарностей
712
Баллы
113


Ссылки
ВСЕ ССЫЛКИ
Скачать библиотеку + demo проект
Инструкция по подключению
Инструкция по использованию

Разгадывание
Библиотека может разгадывать через:
  • Сервис RuCaptcha.com (ModuleType.RuCaptcha)
  • Ручной ввод ZennoPoster (ModuleType.ZennoMonkeyEnter)
Разгадывание через RuCaptcha возможно следующими способами:
  • Обычное разгадывание через отправку изображения всей ReCaptcha (Standart)
  • Разгадывание в формате наложения сетки сервисом (ReCaptcha)
  • Полное разгадывание работниками посредством отправки идентификатора капчи (ReCaptchaNew).
Подробнее о способах разгадывания
Можно выбрать подходящий вам способ. По умолчанию используется ReCaptchaNew.​

Разработка, баги, предложения
По мере обновления библиотеки все изменения будут публиковаться в данной теме.
Если обнаружили баг или недоработку сообщайте тут как можно подробнее:
  • Какой использовался способ разгадывания
  • Сайт, на котором была замечена неприятность
  • Использовались ли прокси
  • Скрины процесса разгадывания
  • Любые другие замеченные особенности
Если капча не разгадывается, попробуйте разгадать самостоятельно через модуль ModuleType.ZennoMonkeyEnter.​

Любые предложения, обсуждения и вопросы оставляем тут.

непонятно мне оное создание если есть СМ ????
Я понимаю парни делали трудиолись когда модуля такого небыло но сейчас то зачем? Дело конечно сугубо личное но мой СМчик себя оправдывает очень даже неплохо!
 

Skrim

Client
Регистрация
23.03.2016
Сообщения
125
Благодарностей
86
Баллы
28
непонятно мне оное создание если есть СМ ????
Я понимаю парни делали трудиолись когда модуля такого небыло но сейчас то зачем? Дело конечно сугубо личное но мой СМчик себя оправдывает очень даже неплохо!
Речь о CapMonster? Если так, то не у всех он есть и не все им пользуются. Для этого и делают разгадывание через сторонние сервисы.
 
  • Спасибо
Реакции: AlexGoodWeb
Регистрация
08.07.2015
Сообщения
2 848
Благодарностей
712
Баллы
113
Речь о CapMonster? Если так, то не у всех он есть и не все им пользуются. Для этого и делают разгадывание через сторонние сервисы.
аааа вонОНОчо я и не подумал, думал ты просто бабала на партнерке срубить решил )))
 

deopl

Client
Регистрация
06.12.2011
Сообщения
659
Благодарностей
126
Баллы
43
Помимо разгадывания капчи, используются дополнительные фичи. Например, есть возможность накладывать номера картинок для быстроты разгадывания через ZennoMonkeyEnter:
т.е. те кто ищет решение, не знает как капча нумеруется?
то чего не хватало
 
  • Спасибо
Реакции: masterLomaster
Регистрация
08.07.2015
Сообщения
2 848
Благодарностей
712
Баллы
113
  • Спасибо
Реакции: deopl

Skrim

Client
Регистрация
23.03.2016
Сообщения
125
Благодарностей
86
Баллы
28
аааа вонОНОчо я и не подумал, думал ты просто бабала на партнерке срубить решил )))
т.е. те кто ищет решение, не знает как капча нумеруется?
то чего не хватало
Вы по делу можете что-нибудь написать, или только троллить умеете? Партнерка, ай-я-яй, какой нехороший. А вы в курсе, что большинство программ пользуются этой партнеркой, в частности одно из вышеупомянутых решений и, подозреваю, что и в самом ZennoPoster'e она используется.
Бабла срубить, не смеши, сам посчитай сколько там может выходить.

Прошу более не писать в теме подобные сообщения, дабы не засорять бесполезным содержимым. Не нравится, не хотите пользоваться, проходите мимо.
 
  • Спасибо
Реакции: Yuriy Zymlex и Geograph

deopl

Client
Регистрация
06.12.2011
Сообщения
659
Благодарностей
126
Баллы
43
что и в самом ZennoPoster'e она используется.
Да я только рад. Разрабам отдаю на благое дело.
И нечего тут подозревать, оно в каталоге софта есть. Как и твое.
Бабла срубить, не смеши, сам посчитай сколько там может выходить.
Тогда зачем заморачиваться? Давай оттестим для всех решение, которое использует стандартные модули зенно.
 

Skrim

Client
Регистрация
23.03.2016
Сообщения
125
Благодарностей
86
Баллы
28
Тогда зачем заморачиваться? Давай оттестим для всех решение, которое использует стандартные модули зенно.
Последний добавленный способ разгадывания выполняется на запросах и не может быть сделан через стандартный модуль. Заморочек нет никаких, повторюсь, что изначально весь код был сделан в одном сниппете, который выложен тут, отлаживать и изменять данный сниппет было не удобно, поэтому он был переделан в библиотеку для возможности отладки через Visual Studio. По сути остался тот же самый сниппет, но стал меньше и вся реализация перенесена в набор методов.

Было:
C#:
// ==================== Все что нужно настроить ========================================
bool extendAlerts = true; // true - выводить сообщения в лог ZennoPoster
string alertTitleLog = "Google ReCaptcha:"; // Заголовок перед сообщением в логе
string captchaModule = "RuCaptcha.dll";   // Можно RuCaptcha.dll или MonkeyEnter.dll
int checkElementTimeout = 10; // Время, в течении которого ищем элементы на странице
int captchaLoadTimeout = 5;   // Время ожидания загрузки формы с картинками
int checkCaptchaCount = 3;       // Количество попыток разгадывания
// =====================================================================================

// ========== Цикл по количеству попыток разгадывания капчи ==========
for (int i = 0; i < checkCaptchaCount; i++)
{
    project.SendInfoToLog("Разгадываем капчу. Попытка " + Convert.ToString(i + 1) + "/" + checkCaptchaCount, alertTitleLog, extendAlerts);
 
    // ========== Цикл по времени поиска элемента recaptcha-checkbox на странице ==========
    for (int j = 0; j < checkElementTimeout * 2; j++)
    {
        System.Threading.Thread.Sleep(500);
     
        // ========== Кликаем ReCaptcha checkbox ==========
        HtmlElement reCaptcha_checkbox = instance.ActiveTab.FindElementByAttribute("div", "class", "recaptcha-checkbox-checkmark", "regexp", 0);
        if (!reCaptcha_checkbox.IsNull && !reCaptcha_checkbox.IsVoid)
        {
            reCaptcha_checkbox.Click();
            break;
        }
     
        if (j == checkElementTimeout * 2 - 1)
        {
            project.SendWarningToLog("Время поиска элемента истекло. Не найден элемент <recaptcha-checkbox>", alertTitleLog, extendAlerts);
            throw new Exception();
        }
    }
    // ========== Проверяем нужные элементы после клика ==========
    string reCaptcha_isChecked = string.Empty; // Состояние чекбокса. false - значит нужно разгадывать картинки
    HtmlElement imgForm = null;
    //HtmlElement imgText = null;
    string imgText = string.Empty;
    bool oldRecaptcha = false;
 
    for (int j = 0; j < checkElementTimeout * 2; j++)
    {
        System.Threading.Thread.Sleep(500);
     
        // ========== Получаем состояние чекбокса ==========
        HtmlElement reCaptcha_checked = instance.ActiveTab.FindElementByAttribute("span", "id", "recaptcha-anchor", "regexp", 0);
        if (!reCaptcha_checked.IsNull && !reCaptcha_checked.IsVoid)
        {
            reCaptcha_isChecked = reCaptcha_checked.GetAttribute("aria-checked");
            if (reCaptcha_isChecked == "true")
                break;
        }
     
        // ========== Ищем форму с картинками на странице ==========
        imgForm = instance.ActiveTab.FindElementByAttribute("div", "class", "rc-imageselect-payload", "regexp", 0);
        var imgs = instance.ActiveTab.FindElementsByAttribute("div", "class", "rc-imageselect-checkbox", "regexp");
        if (!imgs.IsVoid && !imgForm.IsNull && !imgForm.IsVoid && imgs.Count > 0)
        {
            if (captchaModule == "RuCaptcha.dll" && imgs.Count == 16)
            {
                imgForm = instance.ActiveTab.FindElementByAttribute("div", "class", "rc-imageselect-challenge", "regexp", 0);
                var heText = instance.ActiveTab.FindElementByAttribute("div", "class", "rc-imageselect-desc", "regexp", 0);
                imgText = Regex.Replace(heText.GetAttribute("innerhtml"), "<[^>]+>", string.Empty);
                if (imgText == "")
                {
                    heText = instance.ActiveTab.FindElementByAttribute("div", "class", "rc-imageselect-desc-no-canonical", "regexp", 0);
                    imgText = Regex.Replace(heText.GetAttribute("innerhtml"), "<[^>]+>", string.Empty);
                } 
            }
            else
            {
                oldRecaptcha = true;
                imgForm = instance.ActiveTab.FindElementByAttribute("div", "class", "rc-imageselect-payload", "regexp", 0);
            }
            break;
        }
    }
 
    if (reCaptcha_isChecked != "true")
        System.Threading.Thread.Sleep(captchaLoadTimeout * 1000); // Делаем паузу, ждем пока подгрузятся картинки
 
    // ========== Разгадываем капчу ==========
    string recognition_Result = string.Empty; // Результат разгадывания
    string recognition_WrongCaptcha = string.Empty; // Ссылка для возврата ошибки на сервис RuCaptcha.com
    if (reCaptcha_isChecked == "false")
    {
        // Проверяем попалась ли капча с одной картинкой
        if (imgForm.IsVoid)
        {
            project.SendInfoToLog("Не найдена форма с картинками. Скорее всего вылезла старая капча.", alertTitleLog, extendAlerts);
            break;
        }
     
        // Снимаем отметки с картинок
        var imgs = instance.ActiveTab.FindElementsByAttribute("div", "class", "rc-imageselect-checkbox", "regexp");
        if (!imgs.IsVoid)
        {
            for (int k = 0; k < imgs.Count; k++)
            {
                string width = imgs.GetByNumber(k).GetAttribute("width");
                if (width != "" && width != "0")
                    imgs.GetByNumber(k).Click();
            }
        }
     
        // Скриним форму с картинками и конвертируем в jpg
        string attribute = imgForm.DrawToBitmap(false);
        MemoryStream ms = new System.IO.MemoryStream(Convert.FromBase64String(attribute));
        Image bmp = new Bitmap(ms);
        var msJpeg = new System.IO.MemoryStream();
        string jpeg = string.Empty;
        if (captchaModule == "MonkeyEnter.dll" || oldRecaptcha)
        {
            bmp.Save(msJpeg, System.Drawing.Imaging.ImageFormat.Jpeg);
        }
        else
        {
                Image imgNew = new Bitmap(600, 600);
                var g = Graphics.FromImage(imgNew);
                g.DrawImage(bmp, 0, 0, 600, 600);
                g.Dispose();
                imgNew.Save(msJpeg, System.Drawing.Imaging.ImageFormat.Jpeg);
                imgNew.Dispose();
        }
        jpeg = Convert.ToBase64String(msJpeg.ToArray());
        bmp.Dispose();
     
        // Отправляем на распознавание
        project.SendInfoToLog("Отправляем данные на сервис распознавания", alertTitleLog, extendAlerts);
     
        string answer = string.Empty;
        if (captchaModule == "MonkeyEnter.dll" || oldRecaptcha)
            answer = ZennoPoster.CaptchaRecognition(captchaModule, jpeg, "id_constructor=23");
        else
            answer = ZennoPoster.CaptchaRecognition(captchaModule, jpeg, "textinstruction=" + imgText + "&recaptcha=1");
     
        // Приводим результат распознавания к нужному виду
        if (captchaModule == "RuCaptcha.dll")
        {
            // Разделяем ответ от RuCaptcha и складыванем в переменные
            var split = answer.Split(new [] { "-|-" }, StringSplitOptions.RemoveEmptyEntries);
            if (split.Length == 2)
            {
                recognition_Result = split[0];
                recognition_WrongCaptcha = split[1];
            }
            else
            {
                project.SendInfoToLog("Error: не удалось разгадать капчу", alertTitleLog, extendAlerts);
                continue;
            }
         
            // Проверяем ответ sorry
            if (recognition_Result == "sorry")
            {
                project.SendInfoToLog("Капча не распознана. RuCaptcha: sorry", alertTitleLog, extendAlerts);
                continue;
            }
         
            // Обрезаем начало ответа, оставляем только номера картинок, разделенные /
            recognition_Result = Regex.Match(recognition_Result, @"(?<=click:).*").Value;
        }
        else
            recognition_Result = answer;
     
        // Отображаем скрывшуюся капчу
        var e = instance.ActiveTab.FindElementByAttribute("div", "outerhtml", "z-index: 20000000", "regexp", 0);
        e.SetAttribute("style", "display: block; visibility: visible; position: absolute; width: 414px; left: 0px; top: 0px; height: 600px; z-index: 2000000000;");
     
        // ===== Кликаем =====
        do
        {
            // Выдераем номера картинок и кликаем по ним
            // Проверяем тип ответа
            string img_split = Regex.Match(recognition_Result, @"/").Value;
            if (img_split != "")
            {
                if (Regex.Match(recognition_Result, @"/$").Value == "")
                    recognition_Result += "/";
                img_split = Regex.Match(recognition_Result, @"^\d{1,2}(?=/)").Value;
                if (img_split == "")
                    img_split = Regex.Match(recognition_Result, @"^\d{1,2}").Value;
                if (img_split == "")
                    recognition_Result = Regex.Match(recognition_Result, @"(?<=^/).*").Value; // обрезаем разделитель / в начале строки
                else
                {
                    recognition_Result = Regex.Match(recognition_Result, @"(?<=^\d{1,2}/).*").Value; // обрезаем число и разделитель / в начале строки
                }
            }
            else
            {
                img_split = Regex.Match(recognition_Result, @"^\d{1}").Value;
                recognition_Result = Regex.Match(recognition_Result, @"(?<=^\d{1}).+").Value;
            }
         
            // Получаем картинку и кликаем
            string width = "0";
            HtmlElement img = instance.ActiveTab.FindElementByAttribute("img", "class", "rc-image-tile-4", "regexp", Convert.ToInt32(img_split) - 1);
            if (img.IsVoid)
            {
                img = instance.ActiveTab.FindElementByAttribute("div", "class", "rc-image-tile-target", "regexp", Convert.ToInt32(img_split) - 1);
                if (img.IsVoid)
                    img = instance.ActiveTab.FindElementByAttribute("div", "class", "rc-image-tile-wrapper", "regexp", Convert.ToInt32(img_split) - 1);
            }
            img.Click();
            System.Threading.Thread.Sleep(500);
        }
        while (recognition_Result != "");
     
        // ========= Подтверждаем =========
        var verify_button = instance.ActiveTab.FindElementByAttribute("div", "id", "recaptcha-verify-button", "regexp", 0);
        if (!verify_button.IsVoid && !verify_button.IsNull)
        {
            verify_button.Click();
        }
 
        // ========== Проверяем разгадали ли ==========
        string captchaError = string.Empty; // Тип ошибки
        reCaptcha_isChecked = string.Empty; // Состояние чекбокса. false - значит нужно разгадывать картинки
        for (int j = 0; j < 10; j++)
        {
            System.Threading.Thread.Sleep(500);
         
            // Получаем состояние чекбокса
            HtmlElement reCaptcha_checked = instance.ActiveTab.FindElementByAttribute("span", "id", "recaptcha-anchor", "regexp", 0);
            if (!reCaptcha_checked.IsNull && !reCaptcha_checked.IsVoid)
            {
                reCaptcha_isChecked = reCaptcha_checked.GetAttribute("aria-checked");
                if (reCaptcha_isChecked == "true")
                    break;
            }
         
            string textDom = instance.ActiveTab.DomText;
         
            // Получаем ошибку
            captchaError = Regex.Match(textDom, @"(?<=<div\ class=""rc-imageselect-error-select-one""\ style="").*?(?="">)").Value;
            if (captchaError == "")
            {
                captchaError = "1";
                break;
            }
            captchaError = Regex.Match(textDom, @"(?<=<div\ class=""rc-imageselect-error-select-more""\ style="").*?(?="">)").Value;
            if (captchaError == "")
            {
                captchaError = "2";
                break;
            }
            captchaError = Regex.Match(textDom, @"(?<=<div\ class=""rc-imageselect-incorrect-response""\ style="").*?(?="">)").Value;
            if (captchaError == "")
            {
                captchaError = "3";
                break;
            }
        }
     
        // ========= Отправляем ошибки на RuCaptcha =========
        if (reCaptcha_isChecked == "false")
        {
            if (captchaModule == "RuCaptcha.dll")
                    ZennoPoster.HttpGet(recognition_WrongCaptcha, "", "UTF-8", ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.BodyOnly, 30000, "", "", true, 5, AdditionalHeaders: new [] {"Referer: "+ ""});
         
            if (captchaError == "1")
                project.SendInfoToLog("Капча разгадана не верно! Нужно указать еще одно изображение.", alertTitleLog, extendAlerts);
            if (captchaError == "2")
                project.SendInfoToLog("Капча разгадана не верно! Нужно указать больше изображений.", alertTitleLog, extendAlerts);
            if (captchaError == "3")
                project.SendInfoToLog("Капча разгадана не верно! Нужно попытаться еще.", alertTitleLog, extendAlerts);
            continue;
        }
    }
 
    // ========= Все ОК =========
    project.SendInfoToLog("Капча успешно разгадана!", alertTitleLog, extendAlerts);
    return "ok";
}

// Количество попыток разгадывания превышено, завершаем экшен по неудаче
throw new Exception();
Стало:
C#:
// Создаем объект
var recognizer = new RecognizerReCaptcha2(instance.ActiveTab, ModuleType.ZennoMonkeyEnter);

// Разгадываем капчу
int recognizeCode = recognizer.FindAndRecognize();

// Выводим результаты разгадывания в лог
switch(recognizeCode)
{
    case -1: project.SendInfoToLog("Капча не найдена на странице", true); break;
    case 1: project.SendInfoToLog("Капча успешно разгадана", true); break;
    case 0: project.SendInfoToLog("Не удалось разгадать капчу за указанное число попыток", true);
        throw new Exception(); break;
    case 10: project.SendInfoToLog("Форма с изображениями не найдена (возможно не успела прогрузиться)", true);
        throw new Exception(); break;
    case 11: project.SendInfoToLog("Необходимо перезагрузить страницу", true);
        throw new Exception(); break;
}

return "ok";
 
  • Спасибо
Реакции: booldozer и AlexGoodWeb

Gfoblin

Client
Регистрация
30.05.2013
Сообщения
4 591
Благодарностей
1 014
Баллы
113
Ого накинулись на автора, сам давно хотел нечто подобное сделать :-)
Спасибо еще раз!
 
  • Спасибо
Реакции: Geograph и Skrim
Регистрация
08.07.2015
Сообщения
2 848
Благодарностей
712
Баллы
113
Бабла срубить, не смеши, сам посчитай сколько там может выходить.
Ну тогда раз там рубить нечего могли бы взять кодик у разрабов и подключить их партнерку ради благого дела типа одно дело жи делаем на благо народа!
Вы по делу можете что-нибудь написать, или только троллить умеете?
Я неумею!
Прошу более не писать в теме подобные сообщения, дабы не засорять бесполезным содержимым. Не нравится, не хотите пользоваться, проходите мимо.
Ну это уж явно не вам решать! Где хочу там и хожу, что хочу то и пишу!
Не нравится заведите себе сайт и сами себе там общайтесь! ---- хотя в таком случае я бы и туда пришел ))) и писал бы что хотел!
 
  • Спасибо
Реакции: deopl
Регистрация
08.07.2015
Сообщения
2 848
Благодарностей
712
Баллы
113
Ого накинулись на автора, сам давно хотел нечто подобное сделать :-)
Спасибо еще раз!
да ладно накинулись!
Ну вот тебе и халява! Вот афтар молодец уже и клиент созрел авось еще кому снгодитса!
 

Bot_Sculptor

Client
Регистрация
11.06.2012
Сообщения
787
Благодарностей
239
Баллы
43
спасибо за труды, так удобнее. Не обращай внимание на завидных тролей(пусть себе флудят, тебе только лучше, топик апатся будет), развивай/обновляй библиотеку и все будет ок
 
Регистрация
08.07.2015
Сообщения
2 848
Благодарностей
712
Баллы
113

Juniorcpa

Client
Регистрация
27.05.2014
Сообщения
2 031
Благодарностей
1 286
Баллы
113
Странное у нас комьюнити. Скрим, спасибо. Жадинки, не хотите - не пользуйтесь.
 

ibred

Client
Регистрация
04.04.2015
Сообщения
3 835
Благодарностей
3 551
Баллы
113
Автор сего топика на добровольной основе, совершенно БЕСПЛАТНО выложил шаблон по решению каптчи. И если ему с этого падает какая-то копеечка - какая Вам разница, ведь Вы не из своего кармана отдаете эти деньги. Откуда эта нездоровая жадность? Если Вы до этого знали, как решается эта каптча - проходите мимо или оставьте ПОЛЕЗНЫЙ комментарий, помните, что у всех абсолютно разный уровень знаний и подготовки. Не только для Вас пишутся эти посты.
 

AlexGoodWeb

Client
Регистрация
08.04.2015
Сообщения
206
Благодарностей
51
Баллы
28
Все нападки от того, что данный вопрос многими решается только на платной основе. Автор молодец !
Кто не хочет по каким - либо причинам пользоваться идите мимо !
Если решение будет поддерживаться в актуальном состоянии, то будет вообще отлично.
 
  • Спасибо
Реакции: Geograph, Lite и Skrim
Регистрация
15.04.2016
Сообщения
647
Благодарностей
106
Баллы
43
Спасибо!
Очень помог!
Чем можно открыть файл dll для редактирования?
Какая там кодировка?
 
Последнее редактирование:

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