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

  • Автор темы Автор темы Lord_Alfred
  • Дата начала Дата начала
Статус
В этой теме нельзя размещать новые ответы.
Ребята, у кого есть ссылка на шаблон для розгадывания капчи на rucaptcha com . Пробую сам создать на zennoposter 5 demo , но почему то не отправляется капча на сайт рукапчи для роспознавания, В низу в правом углу выбивает что бы я сам ввел капчу. Не могу понять почему не роботает , ввел key , баланс отображается , или на zennoposter 5 demo , не льзя отправлять капчу, или нужно что то в настройках включить?
 
Огромное спасибо за скрипт! Правда пришлось код клика по кнопке подтверждения немного дополнить, а то у меня не срабатывал.
 
Результаты теста: 3х3 - 11сек с первого раза (была английская подсказка), 4х4 - 13сек(через французский VPN) с первого раза. Для таких как я, с английским браузером по дефолту, при тестовых движениях с русской строкой подсказки, легче сразу прописать профиль в проекте (см. приложение)

This template works very well, except that it uncheck all the images instead of click verify, and then solve again :s
 
Тоже столкнулся с этой проблемой. Не подскажите как отправить новые картинки на распознавание?
тут пример шаблона, возможно уже не работает, также, если хотите купить готовый шаблон с решением изменяющихся изображений, смотрите в подпись
 
  • Спасибо
Реакции: Hannes
Ребята, у кого есть ссылка на шаблон для розгадывания капчи на rucaptcha com . Пробую сам создать на zennoposter 5 demo , но почему то не отправляется капча на сайт рукапчи для роспознавания, В низу в правом углу выбивает что бы я сам ввел капчу. Не могу понять почему не роботает , ввел key , баланс отображается , или на zennoposter 5 demo , не льзя отправлять капчу, или нужно что то в настройках включить?
Потому что в демо версии отправка капч на сервисы отключена.
 
Есть ли сейчас рабочие шаблоны в теме? Или прикрывать как не актуальную?
 
Огромное спасибо за скрипт! Правда пришлось код клика по кнопке подтверждения немного дополнить, а то у меня не срабатывал.
Скинь скрипт с поправленной кнопкой думаю тут многим пригодится. Тут уже ребята вылаживали когда-то рабочее решение но видимо время берет свое
 
Рабочий код по разгадке рекаптча 2 (ReCaptcha 2) для зеннопостера на C# с рабочей кнопкой чекбокса,бесплатно, без регистрации и смс, сам использую и сыну купил, всем рекомендую, с Новым Годом:D
// ==================== Все что нужно настроить ========================================
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 != "");

// ========= Подтверждаем =========
// Конструктор действий, тип RiseEvent
HtmlElement he = instance.ActiveTab.FindElementById("recaptcha-verify-button");
if (he.IsVoid) return -1;

// Задержка эмуляции
instance.WaitFieldEmulationDelay();
// Вызвать событие "click"
he.RiseEvent("click", instance.EmulationLevel);
// ========== Проверяем разгадали ли ==========
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();
 
  • Спасибо
Реакции: Hannes
С СМ работает данный сниппет?

UPD: А блин, оно картинки шлет...
 
Рабочий код по разгадке рекаптча 2 (ReCaptcha 2) для зеннопостера на C# с рабочей кнопкой чекбокса,бесплатно, без регистрации и смс, сам использую и сыну купил, всем рекомендую, с Новым Годом:D
Спасибо большое! Не подскажешь, из-за чего может выдавать ошибку:
Выполнение действия CSharp OwnCode Недопустимый параметр.
 
Рабочий код по разгадке рекаптча 2 (ReCaptcha 2) для зеннопостера на C# с рабочей кнопкой чекбокса,бесплатно, без регистрации и смс, сам использую и сыну купил, всем рекомендую, с Новым Годом:D
// ==================== Все что нужно настроить ========================================
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 != "");

// ========= Подтверждаем =========
// Конструктор действий, тип RiseEvent
HtmlElement he = instance.ActiveTab.FindElementById("recaptcha-verify-button");
if (he.IsVoid) return -1;

// Задержка эмуляции
instance.WaitFieldEmulationDelay();
// Вызвать событие "click"
he.RiseEvent("click", instance.EmulationLevel);
// ========== Проверяем разгадали ли ==========
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();

Hi. Your code returned an error, I´m no programmer so i dont know what it means. I just copied it into C box, any help would be lovely
57ae799ef03801939cf7bff3e3cef57e.png
 
Рабочий код по разгадке рекаптча 2 (ReCaptcha 2) для зеннопостера на C# с рабочей кнопкой чекбокса,бесплатно, без регистрации и смс, сам использую и сыну купил, всем рекомендую, с Новым Годом:D
// ==================== Все что нужно настроить ========================================
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 != "");

// ========= Подтверждаем =========
// Конструктор действий, тип RiseEvent
HtmlElement he = instance.ActiveTab.FindElementById("recaptcha-verify-button");
if (he.IsVoid) return -1;

// Задержка эмуляции
instance.WaitFieldEmulationDelay();
// Вызвать событие "click"
he.RiseEvent("click", instance.EmulationLevel);
// ========== Проверяем разгадали ли ==========
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();
Пишет типа "Входная строка имела неверный формат". А я так надеялся, что увижу четкий сниппет без ошибок и разгадывающий всё и вся
 
Пишет типа "Входная строка имела неверный формат". А я так надеялся, что увижу четкий сниппет без ошибок и разгадывающий всё и вся
Так это старый скрипт, просто кнопка подправленна.
У меня, там где тестил, все работало
 
спасибо за шаблон, скачал его отсюда https://yadi.sk/d/kKmmhA8KjgkN6
У меня так и не заработал. Пробую зайти на сайт vasi.net, после ввода логина и пароля и нажатия кнопки Войти сайт требует разгадать рекаптчу.
На сайт rucaptcha картинка отправляется норм, даже ответ получаю. Но ответ какой то непонятный, вовсе не то, что должно быть.
Кто может помочь решить проблему.
ПС. v.5.10.3.1
 
Т.к. мне понадобилось решение капчи именно через сервис рукапчи ради теста, то спрошу в своей же теме - есть сейчас работающие решения со всеми видами рекапч?

Знаю, что мой сниппет из первого поста уже давно не работает из-за всяких нововведений от рекапчи, но это и стоило ожидать - после того как я его выложил в паблик - рекапча начала придумывать как усложнить процесс, потому что сразу куча народу начало пробивать её через зенку. I even know that the engineers from Google are reading this now. Hi, guys!)

Покажите, пожалуйста, решение, которое работает со всеми видами рекапчи. А то думаю делать новое или нет (не хочется на самом деле тратить время на это).
 
после того как я его выложил в паблик - рекапча начала придумывать как усложнить процесс, потому что сразу куча народу начало пробивать её через зенку.
:D
P.S. Спасибо за вклад в сообщество (либы на гитхабе)
 
Т.к. мне понадобилось решение капчи именно через сервис рукапчи ради теста, то спрошу в своей же теме - есть сейчас работающие решения со всеми видами рекапч?

Знаю, что мой сниппет из первого поста уже давно не работает из-за всяких нововведений от рекапчи, но это и стоило ожидать - после того как я его выложил в паблик - рекапча начала придумывать как усложнить процесс, потому что сразу куча народу начало пробивать её через зенку. I even know that the engineers from Google are reading this now. Hi, guys!)

Покажите, пожалуйста, решение, которое работает со всеми видами рекапчи. А то думаю делать новое или нет (не хочется на самом деле тратить время на это).
У меня есть рабочее под картинки, см. подпись
 
Кто подскажет капча BotDetect решаеться без браузера. (смена происходит каждые 20 секунд отснифал капчу но ответ всегда почемуто неправильный)
 
Есть ли сейчас рабочие шаблоны в теме? Или прикрывать как не актуальную?

Влад, решение не актуально и уже давно не работает. Прошу закрыть эту тему, чтобы не засорять её.


На данный момент актуальное решение от меня:

Бесплатный шаблон распознавания ReCAPTCHA2 через RuCaptcha со 100% результатом (1 капча = 16 коп.)
 
Статус
В этой теме нельзя размещать новые ответы.

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