Как решить простую капчу капмонстром на пост гет запросах?

Бишип

Новичок
Joined
Jan 10, 2019
Messages
5
Reaction score
0
Points
1
Всех приветствую уважаемые форумчане!
Хочу научиться решать капчу через пост гет запросы капмонстром, может быть кто-то сможет сделать наглядный пример, как решить обычную капчу на этом сайте: https://www.westland.ru/personal/?register=yes ?

Прочитал много инфы по этому, но без наглядного примера не получается разобраться.

Огромная просьба кто отлично понимает, как это делается, показать на примере шаблона.

П.С. Прошу строго не судить, только разбираюсь работе полностью без браузера.
 

ibred

Client
Joined
Apr 4, 2015
Messages
3,835
Reaction score
3,564
Points
113
1. Создаёте переменные captcha_file и captcha_reportbad.
2. В переменной captcha_file должен быть полный путь к файлу - каптче.
3. Выполняете C# экшен с кодом:
C#:
//Отправка капчи из картинки
byte[] imageArray = System.IO.File.ReadAllBytes(project.Variables["captcha_file"].Value);
string base64String = Convert.ToBase64String(imageArray);
var result = ZennoPoster.CaptchaRecognition("CapMonster2.dll", base64String, "");
var tmp = result.Split(new [] {"-|-"}, StringSplitOptions.None);
if (tmp.Length > 1) {
    project.Variables["captcha_reportbad"].Value = tmp[1];
    return tmp[0];
}
return result;
4. Получаете ответ в перенную, которую выберите в свойствах кубика:

 

Бишип

Новичок
Joined
Jan 10, 2019
Messages
5
Reaction score
0
Points
1
2. В переменной captcha_file должен быть полный путь к файлу - каптче.
То есть я сначала скачиваю картинку капчи на диск, а затем прописываю путь к картинке в этой переменной?
Или я не правильно понял?
 

Roman*

Client
Joined
Sep 25, 2013
Messages
1,664
Reaction score
668
Points
113
То есть я сначала скачиваю картинку капчи на диск, а затем прописываю путь к картинке в этой переменной?
Или я не правильно понял?
Вот код чтоб не скачивать по ссылке на комп, а сразу слать, хорошие люди поделились в свое время:

Code:
//Добавить using System.Net;
byte[] captcha_byte;

// получаем каптчу
Uri url_captcha = new Uri("https://www.yandex.ru/captchaimg?aHR0cHM6Ly9leHQuY2FwdGNoYS55YW5kZXgubmV0L2ltYWdlP2tleT0wMDNsRE5ZeFlndjQyYUxyakdPZlNWb3lrTmVEZUY0QQ,,_0/1535635391/373656395b8e6649443c0a78b7ae029c_b127648832aade0bf68c0a356337ed0b");

HttpWebRequest captchaRequest = (HttpWebRequest)WebRequest.Create(url_captcha); //создаём запрос на скачивание капчи
captchaRequest.UserAgent = project.Profile.UserAgent; //Подставляем юзерагент с профиля

WebResponse captchaResponse = captchaRequest.GetResponse();
Stream responseStream = captchaResponse.GetResponseStream();

using (BinaryReader br = new BinaryReader(responseStream))
{
captcha_byte = br.ReadBytes(500000);
br.Close();
}
responseStream.Close();
captchaResponse.Close();

MemoryStream captcha_Stream = new System.IO.MemoryStream(captcha_byte);
Image image_captcha = System.Drawing.Image.FromStream(captcha_Stream);
//Bitmap bitmap_captcha = new Bitmap(image_captcha);

string base64 = Convert.ToBase64String(captcha_byte);

var result = ZennoPoster.CaptchaRecognition("Rucaptcha.dll", base64, "");
// отрезаем лишнее
var tmp = result.Split(new [] {"-|-"}, StringSplitOptions.None);
if (tmp.Length > 1)
{
return tmp[0];
}
return result;
Только ссылку на капчу и Rucaptcha.dll замени на свое
 

Бишип

Новичок
Joined
Jan 10, 2019
Messages
5
Reaction score
0
Points
1
Вот код чтоб не скачивать по ссылке на комп, а сразу слать, хорошие люди поделились в свое время:

Code:
//Добавить using System.Net;
byte[] captcha_byte;

// получаем каптчу
Uri url_captcha = new Uri("https://www.yandex.ru/captchaimg?aHR0cHM6Ly9leHQuY2FwdGNoYS55YW5kZXgubmV0L2ltYWdlP2tleT0wMDNsRE5ZeFlndjQyYUxyakdPZlNWb3lrTmVEZUY0QQ,,_0/1535635391/373656395b8e6649443c0a78b7ae029c_b127648832aade0bf68c0a356337ed0b");

HttpWebRequest captchaRequest = (HttpWebRequest)WebRequest.Create(url_captcha); //создаём запрос на скачивание капчи
captchaRequest.UserAgent = project.Profile.UserAgent; //Подставляем юзерагент с профиля

WebResponse captchaResponse = captchaRequest.GetResponse();
Stream responseStream = captchaResponse.GetResponseStream();

using (BinaryReader br = new BinaryReader(responseStream))
{
captcha_byte = br.ReadBytes(500000);
br.Close();
}
responseStream.Close();
captchaResponse.Close();

MemoryStream captcha_Stream = new System.IO.MemoryStream(captcha_byte);
Image image_captcha = System.Drawing.Image.FromStream(captcha_Stream);
//Bitmap bitmap_captcha = new Bitmap(image_captcha);

string base64 = Convert.ToBase64String(captcha_byte);

var result = ZennoPoster.CaptchaRecognition("Rucaptcha.dll", base64, "");
// отрезаем лишнее
var tmp = result.Split(new [] {"-|-"}, StringSplitOptions.None);
if (tmp.Length > 1)
{
return tmp[0];
}
return result;
Только ссылку на капчу и Rucaptcha.dll замени на свое
Поменял ссылку на капчу и разгадывание через капмонстр:



Но мне код выдаёт ошибку:



Подскажите, что ещё нужно подправить?
 

Alex733

Client
Joined
Nov 27, 2017
Messages
348
Reaction score
248
Points
43
Подправил код @ibred . Картинка берется без скачивания и без сохранения в файл. Пробуйте:
C#:
HtmlElement he = instance.ActiveTab.FindElementByAttribute("img", "src", "/tools/captcha.php\\?captcha_sid", "regexp", 0);
if (he.IsVoid) return -1;
//Отправка капчи из картинки
string base64String = he.DrawToBitmap(true);
var result = ZennoPoster.CaptchaRecognition("CapMonster2.dll", base64String, "");
var tmp = result.Split(new [] {"-|-"}, StringSplitOptions.None);
if (tmp.Length > 1) {
    project.Variables["captcha_reportbad"].Value = tmp[1];
    return tmp[0];
}
return result;
 

ibred

Client
Joined
Apr 4, 2015
Messages
3,835
Reaction score
3,564
Points
113
Подправил код @ibred . Картинка берется без скачивания и без сохранения в файл. Пробуйте:
C#:
HtmlElement he = instance.ActiveTab.FindElementByAttribute("img", "src", "/tools/captcha.php\\?captcha_sid", "regexp", 0);
if (he.IsVoid) return -1;
//Отправка капчи из картинки
string base64String = he.DrawToBitmap(true);
var result = ZennoPoster.CaptchaRecognition("CapMonster2.dll", base64String, "");
var tmp = result.Split(new [] {"-|-"}, StringSplitOptions.None);
if (tmp.Length > 1) {
    project.Variables["captcha_reportbad"].Value = tmp[1];
    return tmp[0];
}
return result;
@Бишип нужно без браузера, на запросах :-)

Подскажите, что ещё нужно подправить?
Нужно добавить в GAC System.Net.dll

А в общий код:
C#:
using System.Net;
 
  • Thank you
Reactions: Бишип

Yuriy Zymlex

Client
Joined
Oct 23, 2016
Messages
6,713
Reaction score
3,478
Points
113
byte[] imageArray = System.IO.File.ReadAllBytes(project.Variables["captcha_file"].Value);
Можно получить картинку в байты без сохранения на диск через RequestBytes.
if (he.IsVoid) return -1;
Всё же, лучше за практику взять throw new Exception("с сообщением об ошибке"), что бы хотя бы знать, на какой строчке она произошла в случае нескольких проверок.
 
Last edited:
  • Thank you
Reactions: evgen_po and ibred

Бишип

Новичок
Joined
Jan 10, 2019
Messages
5
Reaction score
0
Points
1
Если кого-то не затруднит, могли бы вы скинуть готовый шаблон, чтобы увидеть наглядно, как разгадывается капча без скачивания на диск через капмонстр? На примере этого сайта: https://www.westland.ru/personal/?register=yes или любого другого с простой капчей.
Думаю, это не только мне поможет, но и другим новичкам в будущем.

Большое спасибо всем за ответы и за помощь!
 

ibred

Client
Joined
Apr 4, 2015
Messages
3,835
Reaction score
3,564
Points
113
Если кого-то не затруднит, могли бы вы скинуть готовый шаблон, чтобы увидеть наглядно, как разгадывается капча без скачивания на диск через капмонстр? На примере этого сайта: https://www.westland.ru/personal/?register=yes или любого другого с простой капчей.
Думаю, это не только мне поможет, но и другим новичкам в будущем.

Большое спасибо всем за ответы и за помощь!
Держите.
 

Attachments

Бишип

Новичок
Joined
Jan 10, 2019
Messages
5
Reaction score
0
Points
1

ibred

Client
Joined
Apr 4, 2015
Messages
3,835
Reaction score
3,564
Points
113
Требуется внести небольшие правки в шаблон, который я скинул.

Найти:
C#:
ZennoPoster.CaptchaRecognition("CapMonster2.dll", base64String, "");
Заменить на:
C#:
ZennoPoster.CaptchaRecognition("CapMonster2.dll", base64String, "CapMonsterModule=ZennoLab.universal");
Так как в этой каптчей другой шрифт и модуль Bitrix2 не подходит, а универсальный справляется на ура :-)

 

Roman*

Client
Joined
Sep 25, 2013
Messages
1,664
Reaction score
668
Points
113
Поменял ссылку на капчу и разгадывание через капмонстр:



Но мне код выдаёт ошибку:



Подскажите, что ещё нужно подправить?
Только Добавить using System.Net; , но у меня тоже ошибку выдал, может куки просто нужны быди под мою капчу.
 

Alex733

Client
Joined
Nov 27, 2017
Messages
348
Reaction score
248
Points
43
Куки предварительно сохранить в переменной проекта cookie в формате name=value; name1=value1
C#:
byte[] captcha_byte;
string url =  адрес капчи;
string referer = адрес страницы, на которой находится капча
Uri url_captcha = new Uri(url);

HttpWebRequest captchaRequest = (HttpWebRequest)WebRequest.Create(url_captcha); //создаём запрос на скачивание капчи
//Подставляем юзерагент с профиля
captchaRequest.UserAgent = project.Variables["USERAGENT"].Value;
captchaRequest.Referer = referer;

captchaRequest.Accept = project.Profile.HTTPAccept;
captchaRequest.Headers.Add(project.Profile.AcceptLanguage);
captchaRequest.Headers.Add(project.Profile.AcceptEncoding);

captchaRequest.CookieContainer = new System.Net.CookieContainer();
//captchaRequest.Proxy = new WebProxy(

string[] cookies = project.Variables["cookie"].Value.Split(new String[]{"; ","="}, StringSplitOptions.None);
for (int i =0; i< cookies.Length; i +=2) {
    Cookie cookie = new Cookie(cookies[i], cookies[i+1], "/",  url_captcha.Host );
    captchaRequest.CookieContainer.Add(cookie);
}

WebResponse captchaResponse = captchaRequest.GetResponse();
Stream responseStream = captchaResponse.GetResponseStream();
using (BinaryReader br = new BinaryReader(responseStream))
{ 
  captcha_byte = br.ReadBytes(500000);
  br.Close();
}
responseStream.Close();
captchaResponse.Close();
string base64String = Convert.ToBase64String(captcha_byte);

   var result = ZennoPoster.CaptchaRecognition("CapMonster2.dll", base64String, "CapMonsterModule=ZennoLab.universal");
// отрезаем лишнее
var tmp = result.Split(new [] {"-|-"}, StringSplitOptions.None);
if (tmp.Length > 1)
{
   return tmp[0];
}
return result;
 
Last edited:
  • Thank you
Reactions: Roman*

ibred

Client
Joined
Apr 4, 2015
Messages
3,835
Reaction score
3,564
Points
113
Куки предварительно сохранить в переменной проекта cookie в формате name=value; name1=value1
C#:
byte[] captcha_byte;
string url =  адрес капчи;
string referer = адрес страницы, на которой находится капча
Uri url_captcha = new Uri(url);

HttpWebRequest captchaRequest = (HttpWebRequest)WebRequest.Create(url_captcha); //создаём запрос на скачивание капчи
//Подставляем юзерагент с профиля
captchaRequest.UserAgent = project.Variables["USERAGENT"].Value;
captchaRequest.Referer = referer;

captchaRequest.Accept = project.Profile.HTTPAccept;
captchaRequest.Headers.Add(project.Profile.AcceptLanguage);
captchaRequest.Headers.Add(project.Profile.AcceptEncoding);

captchaRequest.CookieContainer = new System.Net.CookieContainer();
//captchaRequest.Proxy = new WebProxy(

string[] cookies = project.Variables["cookie"].Value.Split(new String[]{"; ","="}, StringSplitOptions.None);
for (int i =0; i< cookies.Length; i +=2) {
    Cookie cookie = new Cookie(cookies[i], cookies[i+1], "/",  url_captcha.Host );
    captchaRequest.CookieContainer.Add(cookie);
}

WebResponse captchaResponse = captchaRequest.GetResponse();
Stream responseStream = captchaResponse.GetResponseStream();
using (BinaryReader br = new BinaryReader(responseStream))
{
  captcha_byte = br.ReadBytes(500000);
  br.Close();
}
responseStream.Close();
captchaResponse.Close();
string base64String = Convert.ToBase64String(captcha_byte);

   var result = ZennoPoster.CaptchaRecognition("CapMonster2.dll", base64String, "CapMonsterModule=ZennoLab.universal");
// отрезаем лишнее
var tmp = result.Split(new [] {"-|-"}, StringSplitOptions.None);
if (tmp.Length > 1)
{
   return tmp[0];
}
return result;
Непонятно зачем использовать HttpWebRequest и хранение кук в переменной, если для всего этого есть свои методы и CookieContainer.
 

ssXXXss

Client
Joined
Dec 23, 2014
Messages
7,374
Reaction score
2,043
Points
113
Непонятно зачем использовать HttpWebRequest и хранение кук в переменной, если для всего этого есть свои методы и CookieContainer.
он с кубика выходит вот и постоянно видимо их кидает в переменную то обратно в контейнер
 

timoharebet

Новичок
Joined
Dec 2, 2018
Messages
10
Reaction score
2
Points
3

Ikigai

Client
Joined
Dec 13, 2016
Messages
276
Reaction score
27
Points
28
1. Создаёте переменные ..
Все сделал по шагам, такая ошибка


А подскажите пожалуйста такой же код , но для RuCaptcha ( или любой другой веншний сервис)
 
  • Thank you
Reactions: Zoolone

Zoolone

Banned
Joined
Jun 5, 2019
Messages
141
Reaction score
153
Points
43

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

Все сделал по шагам, такая ошибка


А подскажите пожалуйста такой же код , но для RuCaptcha ( или любой другой веншний сервис)
Ап, поддерживаю вопрос для АнтигЕйт
 

Ikigai

Client
Joined
Dec 13, 2016
Messages
276
Reaction score
27
Points
28
Ап, поддерживаю вопрос для АнтигЕйт
Держи я уже нашел
Code:
//Отправка капчи из картинки
var captcha__get = project.Variables["captcha__get"].Value;
var image = System.Drawing.Image.FromFile(@captcha__get);
string base64String = String.Empty;
using (System.IO.MemoryStream ms = new System.IO.MemoryStream())
{
  image.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
  byte[] imageBytes = ms.ToArray();
  base64String = Convert.ToBase64String(imageBytes);
}
var result = ZennoPoster.CaptchaRecognition("RuCaptcha.dll", base64String, "");
// отрезаем лишнее
var tmp = result.Split(new [] {"-|-"}, StringSplitOptions.None);
if (tmp.Length > 1) return tmp[0];
return result;
RuCaptcha.dll меняешь на Anti-Captcha.dll ( под сервис который тебе надо)


Все получает, но ищу еще решение с POST запросом, отправки полученного значения на самом сайте.
 

Zoolone

Banned
Joined
Jun 5, 2019
Messages
141
Reaction score
153
Points
43

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

Держи я уже нашел
Code:
//Отправка капчи из картинки
var captcha__get = project.Variables["captcha__get"].Value;
var image = System.Drawing.Image.FromFile(@captcha__get);
string base64String = String.Empty;
using (System.IO.MemoryStream ms = new System.IO.MemoryStream())
{
  image.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
  byte[] imageBytes = ms.ToArray();
  base64String = Convert.ToBase64String(imageBytes);
}
var result = ZennoPoster.CaptchaRecognition("RuCaptcha.dll", base64String, "");
// отрезаем лишнее
var tmp = result.Split(new [] {"-|-"}, StringSplitOptions.None);
if (tmp.Length > 1) return tmp[0];
return result;
RuCaptcha.dll меняешь на Anti-Captcha.dll ( под сервис который тебе надо)
Респект, протестю + в карму :-))))

Все получает, но ищу еще решение с POST запросом, отправки полученного значения на самом сайте.
 

elakeri

Client
Joined
Jul 23, 2018
Messages
203
Reaction score
10
Points
18

dimafatality

Client
Joined
Jan 19, 2014
Messages
265
Reaction score
255
Points
63
как все же скачать картинку запросом с урла вида
Простейший вариант -
В переменной path будет путь к файлу.
Дальше переименовать в *.jpg (если потребуется).
 
Last edited:
  • Thank you
Reactions: elakeri

elakeri

Client
Joined
Jul 23, 2018
Messages
203
Reaction score
10
Points
18
Простейший вариант -
В переменной path будет путь к файлу.
Дальше переименовать в *.jpg (если потребуется).
))), а я плясал вокруг этого .php, просто оказ расширение махнуть.. спасибо
 

elakeri

Client
Joined
Jul 23, 2018
Messages
203
Reaction score
10
Points
18
Держите.
извиняюсь )) разобрался.... как всегда, сначала спросить, и потом разобраться (
 
Last edited:

Igorst

Client
Joined
Aug 7, 2011
Messages
190
Reaction score
16
Points
18
Пытаюсь спарсить капчу через ГЕТ запрос - но ее там нет

Если парсить через DOM страницы - все есть

Ка быть???

В гет запросе приходит такое
C#:
                            <span class="img-captcha">
                                                                <img class="control" src="img/hk/0.gif" width="68" height="25" alt="" />
                                <a href="#refresh" class="refresh" title="обновить" onclick="return false;"><img src="img/arrow_refresh.png" alt="обновить" /></a>
                            </span>
Через DOM
C#:
                                                                <img class="control" src="/captcha/captcha.php?rnd=0.2736579265950081" alt="" height="25" width="68">
                                <a href="#refresh" class="refresh" title="обновить" onclick=""><img src="img/arrow_refresh.png" alt="обновить"></a>
                            </span>
 
Last edited:

Users Who Are Viewing This Thread (Total: 1, Members: 0, Guests: 1)