Проект для распознавания Google ReCAPTCHA 2 с помощью ruCaptcha для ZennoPoster 5

Статус
Закрыто для дальнейших ответов.

proffyes

Client
Регистрация
16.07.2015
Сообщения
409
Благодарностей
19
Баллы
18

Mikhail B.

Client
Регистрация
23.12.2014
Сообщения
14 427
Благодарностей
5 454
Баллы
113
Он есть, вы плохо искали, правда разок вышли дорожные знаки, видимо, что-то палиться.
 

Luda1

Client
Регистрация
28.12.2015
Сообщения
114
Благодарностей
19
Баллы
18
Ребята обновленного(рабочего) проекта не у кого нету? Последние два дня только 3х3 старые проходят,4х4 работнички с рукапчи разгадывают как попало(
Присоединяюсь!
Тоже беда.
А через аудио после некоторого времени на одном ip вобще непонятно что лезет.
Капмонстр с ума сходит!
 

Aviatikor

Client
Регистрация
30.01.2016
Сообщения
91
Благодарностей
30
Баллы
18
Ребята, выручите сниппетом, который разгадывает эту ху№ню!!!
Держи у меня этот разгадывает чекбоксы, нашёл где-то на просторах вики по zenno сейчас уже и не вспомню где это, поэтому скидываю код C#

Код:
// Основные параметры
// время ожидания
var waitTime = 1000;
// количество попыток распознать
var tryRecognize = 3;
// количество попыток загрузить элемент
var tryLoadElement = 60;
// получать полный ответ
bool fullAnswer = true;
// показывать сообщения о прогрессе распознавания
var needShowMessages = false;
// Вспомогательные переменные
// вкладка
var tab = instance.ActiveTab;
// вид рекаптчи 2 (с кнопкой "я не робот" или без)
bool isNewView = true;
// поздравляем, вы не робот
var success = false;
// время вышло
var timeout = false;
// задание для рекапчи 2
var task = string.Empty;
// url изображения
var src = string.Empty;
// картинка в base64
var imageString = string.Empty;
// ответ на каптчу
var answer = string.Empty;
// капча изменилась
var changed = false;
// пустой ответ
var answerIsEmpty = false;
// Проверка прохождения защиты
Action CheckOK= () => {
    System.Threading.Thread.Sleep(waitTime); // подождём загрузки элементов
    for (int k = 0; k < tryLoadElement; k++)
    {      
        var check = tab.FindElementByAttribute("div", "class", "recaptcha-checkbox-checkmark", "regexp", 0);
        var more = tab.FindElementByAttribute("div", "class", "rc-imageselect-error-select-more", "regexp", 0);
        var wrong = tab.FindElementByAttribute("div", "class", "rc-imageselect-incorrect-response", "regexp", 0);
        if (!more.IsVoid && !wrong.IsVoid)
        {
            var isNotVisibleMore = more.GetAttribute("outerhtml").Replace(" ","").Contains("display:none");
            var isNotVisibleWrong = wrong.GetAttribute("outerhtml").Replace(" ","").Contains("display:none");
            if (isNotVisibleMore && isNotVisibleWrong)
            {
                if (!check.IsVoid)
                {
                    if (check.OuterHtml.Contains("style=\"\""))
                    {
                        success = true;
                        break;
                    }
                }
                else System.Threading.Thread.Sleep(waitTime);
            }
            else break;
        }
        if (k == (tryLoadElement - 1)) timeout = true;
    }
};
Action UpdateImage= () => {
    // Обновляем капчу при необходимости
    if (!changed)
    {
        HtmlElement reload = null;
        if (isNewView) reload = tab.FindElementByAttribute("div", "id", "recaptcha-reload-button", "text", 0);
        else reload = tab.GetDocumentByAddress("0;0").FindElementByTag("form", 1).FindChildByAttribute("input:submit", "class", "fbc-button-reload fbc-button", "regexp", 0);
        if (!reload.IsVoid) reload.Click();
        else timeout = true;
    }
    changed = false;
    for (int k = 0; k < tryLoadElement; k++)
    {
        System.Threading.Thread.Sleep(waitTime); // подождём загрузки элемента
        // ищем картинку
        var testImage = tab.FindElementByAttribute("img", "class", "rc-image-tile", "regexp", 0);
        if (testImage.IsVoid) continue;
        // получаем url изображания
        var newSrc = testImage.GetAttribute("src");
        // если изображение изменилось, то выходим
        if (newSrc != src) break;
        if (k == (tryLoadElement - 1)) timeout = true;
    }
};
// Поиск рекаптчи 2
Action SearchReCaptcha2= () => {
    project.SendInfoToLog("Поиск рекаптчи 2", needShowMessages);
    for (int k = 0; k < tryLoadElement; k++)
    {
        // поиск кнопки "Я не робот"
        var notRobot = tab.FindElementByAttribute("div", "class", "recaptcha-checkbox-checkmark", "regexp", 0);
        // если нашли
        if (!notRobot.IsVoid)
        {
            // клик по кнопке
            notRobot.Click();
            System.Threading.Thread.Sleep(waitTime); // подождём немного
            // если ввод каптчи не требуется
            var check = tab.FindElementByAttribute("div", "class", "recaptcha-checkbox-checkmark", "regexp", 0);
            if (!check.IsVoid)
            {
                if (check.OuterHtml.Contains("style=\"\""))
                {
                    success = true;
                    break;
                }
            }
            // Ждем пока загрузится форма
            for (int j = 0; j < tryLoadElement; j++)
            {
                var loadedForm = tab.FindElementByAttribute("div", "class", "primary-controls", "regexp", 0);
                if (!loadedForm.IsVoid) break;
                else System.Threading.Thread.Sleep(waitTime); // подождём загрузки элемента
                if (j == (tryLoadElement - 1)) timeout = true;
            }
            break;
        }
        else
        {
            // убеждаемся, что это мобильная версия рекапчи
            var form = tab.FindElementByAttribute("form", "fulltag", "form", "text", 0);
            if (!form.IsVoid)
            {
                isNewView = false;
                fullAnswer = false;
                break;
            }
            else System.Threading.Thread.Sleep(waitTime); // подождём загрузки элемента
        }
        if (k == (tryLoadElement - 1)) timeout = true;
    }
};
// Поиск задания рекапчи 2
Action SearchTask= () => {
    project.SendInfoToLog("Поиск задания", needShowMessages);
    for (int k = 0; k < tryLoadElement; k++)
    {
        HtmlElement taskHe = null;
        if (isNewView) taskHe = tab.FindElementByAttribute("div", "class", "rc-imageselect-desc-wrapper", "regexp", 0);
        else taskHe = tab.FindElementByAttribute("label", "class", "fbc-imageselect-message-text", "regexp", 0);
        if (!isNewView && taskHe.IsVoid) taskHe = tab.FindElementByAttribute("div", "class", "fbc-imageselect-message-error", "regexp", 0);
        if (!taskHe.IsVoid)
        {
            task = taskHe.GetAttribute("innertext"); // получаем задание
            var suspecttask = task.ToLower();
            if (suspecttask.Contains("street signs") || suspecttask.Contains("указатели") || suspecttask.Contains("дорожні знаки"))
            {
                UpdateImage();
                continue;
            }
            break;  
        }
        else System.Threading.Thread.Sleep(waitTime); // подождём загрузки элемента
        if (k == (tryLoadElement - 1)) timeout = true;
    }
};
// Поиск изображения
Action SearchImage= () => {
    project.SendInfoToLog("Поиск изображения", needShowMessages);
    System.Threading.Thread.Sleep(waitTime * 3); // подождём загрузки элемента
    for (int k = 0; k < tryLoadElement; k++)
    {
        HtmlElement image = null;
        if (isNewView) image = tab.FindElementByAttribute("img", "class", "rc-image-tile", "regexp", 0);
        else  image = tab.FindElementByAttribute("img", "class", "fbc-imageselect-payload", "regexp", 0);
        // если есть изображение
        if (!image.IsVoid)
        {
            // получаем url изображания
            src = image.GetAttribute("src");
            imageString = image.DrawToBitmap(true);
            break;
        }
        else System.Threading.Thread.Sleep(waitTime); // подождём загрузки элемента
        if (k == (tryLoadElement - 1)) timeout = true;
    }
};
// Распознавание
Action Recognize= () => {
    project.SendInfoToLog("Распознавание", needShowMessages);
    if (!isNewView) fullAnswer = false;
    var answerString = ZennoPoster.CaptchaRecognition("Rucaptcha.dll", imageString, "id_constructor=23");
    var split = answerString.Split(new [] { "-|-" }, StringSplitOptions.RemoveEmptyEntries);
    answer = split[0];
};
//Вводим ответ
Action InputAnswer= () => {
    if (!String.IsNullOrEmpty(answer) && answer != "sorry")
    {
                project.SendInfoToLog("Ввод ответа и проверка правильности", needShowMessages);
        int count = 0;
        foreach (char c in answer)
        {
            if (fullAnswer)
            {
                if (count == 2) break;
            }
            int index;
            HtmlElement he = null;  
            if (isNewView)
            {
                index = Convert.ToInt32(c.ToString()) - 1;
                he = tab.FindElementByAttribute("img", "class", "rc-image-tile", "regexp", index);
            }
            else
            {
                string attrValue = "fbc-imageselect-checkbox-" + c;
                he = tab.FindElementByAttribute("input:checkbox", "class", attrValue, "regexp", 0);
            }
            if (!he.IsVoid)
            {
                he.Click(); //кликаем на картинку
                System.Threading.Thread.Sleep(waitTime);// подождём немного
            }
            if (fullAnswer) count++;
        }
        // ищем кнопку "Подтвердить"
        HtmlElement apply = null;
        if (isNewView) apply = tab.FindElementById("recaptcha-verify-button");
        else apply = tab.GetDocumentByAddress("0;_0").FindElementByTag("form", 0).FindChildByAttribute("input:submit", "fulltag", "input:submit", "text", 0);
        if (!apply.IsVoid) apply.Click();
      
        // проверим правильность ответа
        if (isNewView)
        {
            CheckOK();
            if (success) return;
            // вводим оставшуюся часть ответа
            if (fullAnswer)
            {
                for (int i = count; i < answer.Length; i++)
                {
                    // снова ищем картинку
                    var testImage = tab.FindElementByAttribute("img", "class", "rc-image-tile", "regexp", 0);
                    if (testImage.IsVoid) break;
                    // получаем url изображания
                    var newSrc = testImage.GetAttribute("src");
                    // если изображение изменилось, то выходим
                    if (newSrc != src) break;
                    else changed = true;
                    // иначе продолжаем ввод
                    int index = Convert.ToInt32(answer[i].ToString()) - 1;
                    var he = tab.FindElementByAttribute("img", "class", "rc-image-tile", "regexp", index);
                    if (!he.IsVoid)
                    {
                        he.Click();
                        System.Threading.Thread.Sleep(waitTime); // подождём немного
                        if (!apply.IsVoid) apply.Click();
                        CheckOK();
                        if (success) return;
                    }
                }
            }
        }
    }
    else answerIsEmpty = true;
};
// Дополнительные действия для старого вида рекапчи
Action ActsOldView= () => {
    System.Threading.Thread.Sleep(waitTime * 3); // подождём загрузки элемента
    // Проверяем, была ли ошибка в распознавании
    HtmlElement he = tab.FindElementByAttribute("img", "class", "fbc-imageselect-payload", "regexp", 0);
    if (!he.IsVoid)
    {
        return;
    }
    string txt = string.Empty;
    // ищем текст, который надо вставить
    for (int k = 0; k < tryLoadElement; k++)
    {
        HtmlElement heGetText = tab.FindElementByAttribute("textarea", "dir", "ltr", "regexp", 0);
        if (!heGetText.IsVoid)
        {
            txt = heGetText.GetAttribute("value");
            break;  
        }
        else
        {
            System.Threading.Thread.Sleep(waitTime); // подождём немного
            continue;
        }
        if (k == (tryLoadElement - 1)) timeout = true;
    }
    // ищем куда вставлять текст
    for (int k = 0; k < tryLoadElement; k++)
    {
        HtmlElement hePutText = tab.FindElementByAttribute("textarea", "id", "g-recaptcha-response", "regexp", 0);
        if (!hePutText.IsVoid)
        {
            hePutText.SetValue(txt, "None", false);
            break;  
        }
        else
        {
            System.Threading.Thread.Sleep(waitTime); // подождём немного
            continue;
        }
        if (k == (tryLoadElement - 1)) timeout = true;
    }
    // нажимаем "Подтвердить"
    for (int k = 0; k < tryLoadElement; k++)
    {
        var submit = tab.FindElementByAttribute("input:submit", "fulltag", "input:submit", "regexp", 0);
        if (!submit.IsVoid)
        {
            submit.Click();
            break;
        }
        else
        {
            System.Threading.Thread.Sleep(waitTime); // подождём немного
            continue;
        }
        if (k == (tryLoadElement - 1)) timeout = true;
    }
    success = true;
};
SearchReCaptcha2();
if (timeout) throw new Exception("Вышло время ожидания загрузки элемента");
for (int i = 0; i < tryRecognize; i++)
{
    SearchTask();
    if (timeout) break;
    SearchImage();
    if (timeout) break;
    Recognize();
    InputAnswer();
    if (answerIsEmpty)
    {
        answerIsEmpty = false;
        UpdateImage();
        continue;
    }
    if (!isNewView) ActsOldView();
    if (timeout) break;
    if (success) return "ok";
    if (i != (tryRecognize - 1)) UpdateImage();
    if (timeout) break;
}
if (timeout) throw new Exception("Вышло время ожидания загрузки элемента");
else throw new Exception("Не распознано. Закончились попытки распознать, прежде чем ответ был засчитан");
 

proffyes

Client
Регистрация
16.07.2015
Сообщения
409
Благодарностей
19
Баллы
18
У кого нибудь разгадывает 2Х8?
 

Andi88

Client
Регистрация
17.10.2015
Сообщения
228
Благодарностей
26
Баллы
28
Держи у меня этот разгадывает чекбоксы, нашёл где-то на просторах вики по zenno сейчас уже и не вспомню где это, поэтому скидываю код C#
Хороший сниппет, но он не отсылает инструкцию) и посылает просто картинку.(пробую доделать)
 

Andi88

Client
Регистрация
17.10.2015
Сообщения
228
Благодарностей
26
Баллы
28
4х4 наверно кликают боты, всегда за одно время и накликано наобум.
 

Andi88

Client
Регистрация
17.10.2015
Сообщения
228
Благодарностей
26
Баллы
28
Сейчас не отгадывает капчу 4х4 так как кто то говорил что ответы должны приходить в формате в разделителем 1/2/3/4 а сейчас они приходят так 1234
параметр recaptcha=1 не установлен
 

infosimple

Client
Регистрация
01.01.2015
Сообщения
427
Благодарностей
61
Баллы
28
Держи у меня этот разгадывает чекбоксы, нашёл где-то на просторах вики по zenno сейчас уже и не вспомню где это, поэтому скидываю код C#
у меня не работает, CSharp OwnCode Входная строка имела неверный формат.
 
  • Спасибо
Реакции: Andi88

Mikhail B.

Client
Регистрация
23.12.2014
Сообщения
14 427
Благодарностей
5 454
Баллы
113
Плоховатенько снипет разгадывает, кажется, что гугл его палит. А как CAP Monster работает в рекапчой? А то школота не всегда верно кликает по фоткам, 50% неверно.
 

Mikhail B.

Client
Регистрация
23.12.2014
Сообщения
14 427
Благодарностей
5 454
Баллы
113
Такие разгадывает 100% с ошибкой!
2016-03-10_003430.jpg

Объясните почему снипет отрабатывает с ошибкой иногда, хотя капча разгаданна верно.
 
Последнее редактирование:
  • Спасибо
Реакции: AlexGoodWeb

AlexGoodWeb

Client
Регистрация
08.04.2015
Сообщения
206
Благодарностей
51
Баллы
28
Как разгадывать такие варианты REкапчи ?
Когда нужно правильно проставить галочки и после вставить полученный код в пустое поле ...

capcha1.png
capcha2.png
 

Mikhail B.

Client
Регистрация
23.12.2014
Сообщения
14 427
Благодарностей
5 454
Баллы
113
Очень долго разгадывает, есть снипет который позволил бы руками разгадать? 50-70% времени уходит на разгадывание это недопустимо!
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
20 279
Благодарностей
9 057
Баллы
113

AlexGoodWeb

Client
Регистрация
08.04.2015
Сообщения
206
Благодарностей
51
Баллы
28
Результаты теста: 3х3 - 11сек с первого раза (была английская подсказка), 4х4 - 13сек(через французский VPN) с первого раза. Для таких как я, с английским браузером по дефолту, при тестовых движениях с русской строкой подсказки, легче сразу прописать профиль в проекте (см. приложение)
Будет ли обновление сниппета ? На сегодня уже отрабатывает не всегда корректно, а некоторые виды капч не разгадывает вовсе.
 

Jefreenick

Новичок
Регистрация
10.10.2012
Сообщения
21
Благодарностей
1
Баллы
3
Тоже проблема c 2X8. требует выбрать водоемы, озера.. капча отсылается на rucaptcha, обычно верно разгадывается, но выбор не фиксируется, а пишет, что посмотрите новые изображения или выполнить несколько заданий, второй раз с rucaptcha приходит обычно не верный ответ, если дальше пробовать в ручную разгадывать, результата обычно нет, выбор не фиксируется и снова одно и тоже. пробовал в ручную, если повезет, то второй раз вылезут дорожные знаки, с ними бывает норм проходит. хотелось бы организовать хотя бы с ручным вводом.
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 714
Баллы
113
Вы должны выполнить несколько заданий = не нравится айпи
 

AloneSlamer

Client
Регистрация
29.01.2013
Сообщения
1 404
Благодарностей
362
Баллы
83

Обращаем Ваше внимание на то, что данный пользователь заблокирован.
Не рекомендуем проводить с AloneSlamer какие-либо сделки.

А что делать когда капча разгадана верно а кубик думает что нет ?
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 714
Баллы
113
что это значит?)
 

blud

Client
Регистрация
19.04.2011
Сообщения
657
Благодарностей
77
Баллы
28
вот никак не пойму какова.. вы заморачиваетесь по 4х4 и 2х4 ... я, к примеру, проверяю перед запуском скрипта, какую картинку выкинуло, и если это не 3х3, то обновляю капчу... но есть пара проблем:
1.если рукапча неправильно разгадала 3х3, то возможно рекапча выкинет и 4х4 и 2х4, а как нажать кнопку "обновить капчу" внутри кода я х.з. (ну не прогер я)..
2. это 3х3 с меняющимися картинками.. как их отлавливать я не знаю
 

Mikhail B.

Client
Регистрация
23.12.2014
Сообщения
14 427
Благодарностей
5 454
Баллы
113
Да бывает такое, рекапча закрылась, разгадалась, а снипет считает, что это не так, обычно после 3 попытки такое происходит.
 

blud

Client
Регистрация
19.04.2011
Сообщения
657
Благодарностей
77
Баллы
28

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 714
Баллы
113
вот никак не пойму какова.. вы заморачиваетесь по 4х4 и 2х4 ... я, к примеру, проверяю перед запуском скрипта, какую картинку выкинуло, и если это не 3х3, то обновляю капчу... но есть пара проблем:
1.если рукапча неправильно разгадала 3х3, то возможно рекапча выкинет и 4х4 и 2х4, а как нажать кнопку "обновить капчу" внутри кода я х.з. (ну не прогер я)..
2. это 3х3 с меняющимися картинками.. как их отлавливать я не знаю
просто нужно не заморачиваться с большим куском кода. Сделать вложенный проект на понятных и легкоредактируемых кубиках. И там всякие варианты наворачивать, если поведение рекаптчи начинает отличатся.
 
  • Спасибо
Реакции: blud

blud

Client
Регистрация
19.04.2011
Сообщения
657
Благодарностей
77
Баллы
28
просто нужно не заморачиваться с большим куском кода. Сделать вложенный проект на понятных и легкоредактируемых кубиках. И там всякие варианты наворачивать, если поведение рекаптчи начинает отличатся.
как вариант
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 714
Баллы
113
у нас кстати много раз на форуме поднимали тему типа общего репозитория сниппетов, всем делиться между собой и тд) вот он отличный пример, когда имея одну задачу и одну основу уже коллективным разумом бы получилось запилить общий вложенный проект. но пока что то никак( судя по сообщениям(

я бы сам поделился наработками, если бы были. я просто в своих схемах с каптчами вообще не взаимодействую, поэтому не тестил даже лично эту тему.
 

blud

Client
Регистрация
19.04.2011
Сообщения
657
Благодарностей
77
Баллы
28
у нас кстати много раз на форуме поднимали тему типа общего репозитория сниппетов, всем делиться между собой и тд) вот он отличный пример, когда имея одну задачу и одну основу уже коллективным разумом бы получилось запилить общий вложенный проект. но пока что то никак( судя по сообщениям(

я бы сам поделился наработками, если бы были. я просто в своих схемах с каптчами вообще не взаимодействую, поэтому не тестил даже лично эту тему.
предлагаю дружить домами(с) "Москва слезам не верит"

а если серьезно, то действительно как то не оч. у нас коллективный разум ... где то пару недаль назад я описал(помоему в этой теме) как я отслеживаю и пропускаю 2х4 и 4х4, но помоему никто на это внимание не обратил и народ продолжает долбится в эти капчи ... что это.. мазохизм или .... я х.з.
 
  • Спасибо
Реакции: rostonix

Andi88

Client
Регистрация
17.10.2015
Сообщения
228
Благодарностей
26
Баллы
28
Пропускает всё кроме стары
 

Вложения

blud

Client
Регистрация
19.04.2011
Сообщения
657
Благодарностей
77
Баллы
28
Пропускает всё кроме стары
посмотрел ваш шаблон, вы считаете количество картинок в капче, и если их не девять, то обновить капчу... а если их девять, но это капча с заменяющимися картинками ?? .. 100% будет ошибка
сорри не досмотрел шаблон .... следующим кубиком проверка как раз на эти капчи ... изините
 

Andi88

Client
Регистрация
17.10.2015
Сообщения
228
Благодарностей
26
Баллы
28
посмотрел ваш шаблон, вы считаете количество картинок в капче, и если их не девять, то обновить капчу... а если их девять, но это капча с заменяющимися картинками ?? .. 100% будет ошибка
+элемент текста "тыкайте пока не пропадёт бла бла бла", использовал данный сниппет успешно неделю, но обновлений капчи требуется много+ капч отправлять много, но пробивает
 

AlexGoodWeb

Client
Регистрация
08.04.2015
Сообщения
206
Благодарностей
51
Баллы
28
+элемент текста "тыкайте пока не пропадёт бла бла бла", использовал данный сниппет успешно неделю, но обновлений капчи требуется много+ капч отправлять много, но пробивает
Т.е. долго обновлять может по времени + приходится за один "пробив" оплачивать несколько разгадываний ? Правильно понял ? ... Или ?
 
Статус
Закрыто для дальнейших ответов.

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