Get Post запросы и Капча

  • Автор темы Автор темы yourmind
  • Дата начала Дата начала

yourmind

Client
Регистрация
13.09.2010
Сообщения
253
Реакции
26
Баллы
28
Привет, делаю шаблоны с использованием GET/POST запросов, при выполнении встречаются капчи, выпарсил урл капчи, как можно ее отправить на сервис разгадывания?
 
Код:
Развернуть Свернуть Копировать
//Отправка капчи из картинки
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("Anti-Captcha.dll", base64String, "");
// отрезаем лишнее
var tmp = result.Split(new [] {"-|-"}, StringSplitOptions.None);
if (tmp.Length > 1) return tmp[0];
return result;

project.Variables["captcha__get"].Value; - тут путь до капчи (заранее сохранять ее через get "сохранить как файл" )
 
Код:
Развернуть Свернуть Копировать
//Отправка капчи из картинки
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("Anti-Captcha.dll", base64String, "");
// отрезаем лишнее
var tmp = result.Split(new [] {"-|-"}, StringSplitOptions.None);
if (tmp.Length > 1) return tmp[0];
return result;

project.Variables["captcha__get"].Value; - тут путь до капчи (заранее сохранять ее через get "сохранить как файл" )

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

Например:
У твиттера есть капча при регистрации
Мы заходим на страничку регистрации и сохраняем полученные куки
потом обращаемся к адресу капчи с ранее спарсеными куками и сохраняем ее (выше писал как).
 
  • Оценить
Реакции: bigcajones и Irbis
lexone, спасибо, все работает отлично!
 
Если куки не сохранять, картинку же сохранять через GET, а потом отправлять код уже разгаданной каптчи на нужный сервер, то вышеуказанный код работает, но сервер дает отлуп по каптче. Почему?
Если куки сохранять, то приведенный выше код не работает, пишет ошибку:
Выполнение действия CSharp OwnCode Недостаточно памяти.
Выполнение на этом экшене прерывается.
Что не так, куда копать?
 
Застрял вчера так же на капче гетом.Буду шаманить сейчас,может получиться.То есть сначало берем гетом картинку в переменную, переменную вставляем вместо captcha__get путь до самой картинки. Будем надеятся что будет брать и отправлять, именно ту капчу, а не следующую.
 
я хочу упомянть что для успешности дейстивий на запросах лучше сначала проснифать все и уведить что там передеается в шапке и теле запроса для всего что вам нужно.
может оказаться что капча гетится с каким нибудь x-origin хедером или другими фишками похуже него.
 
Код:
Развернуть Свернуть Копировать
//Отправка капчи из картинки
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("Anti-Captcha.dll", base64String, "");
// отрезаем лишнее
var tmp = result.Split(new [] {"-|-"}, StringSplitOptions.None);
if (tmp.Length > 1) return tmp[0];
return result;

project.Variables["captcha__get"].Value; - тут путь до капчи (заранее сохранять ее через get "сохранить как файл" )
подскажите а в данном случае как сделать урл на жалобу, если капча разгадана не верно?
 
ап темы, может кто помочь, по вопросу, который написан в предыдущем сообщении?
 
url лежит в tmp[0], если (tmp.Length > 1)
 
Такая же проблема.
CSharp OwnCode Недостаточно памяти.
В проекте 2 капчи. первую отрабатывает, на второй спотыкается. Не знаю что и делать
 
Дык никто не подскажет? обидно прост
 
Я никогда не пользовался методом со 2-го поста, но предполагаю что вся проблема в формате. Подсмотренный на стеке код прдполагает что все капчи будут в png формате. Когда это не так, попытка занести картинку в поток, выдает переполнение памяти.
Все эти заумные манипуляции в принципе не нужны потому как задача состоит в том чтобы перевести файл в Base64.
C#:
Развернуть Свернуть Копировать
string captchapath = project.Variables["captchapath"].Value;
string b64strcaptcha = Convert.ToBase64String(System.IO.File.ReadAllBytes(captchapath)); \\всего одна строчка!!!
return ZennoPoster.CaptchaRecognition("Anti-Captcha.dll", b64strcaptcha, "").Split('-')[0];
- этим пользовался
 
Последнее редактирование:
скажите, как получить ссылку на жалобу на "неправильно разгаданную капчу" при данном способе отправки капчи в сервис?
пс: при использовании последнего метода в 3 строки
 
там вроде если .Split('-')[1] не "OK" то айди или урл на абуз. посмотри весь резалт и допили логику
// отрезаем лишнее

var tmp = result.Split(new [] {"-|-"}, StringSplitOptions.None);

if (tmp.Length > 1) return tmp[0];

return result;
если это deathbycaptcha ссылка на абуз не возвращается
 
там вроде если .Split('-')[1] не "OK" то айди или урл на абуз. посмотри весь резалт и допили логику

если это deathbycaptcha ссылка на абуз не возвращается
у тебя в примере в три строки нет же этого? из него можно вытянуть жалобный урл?
 
конечно можно, смотри весь результат и бери что тебе нужно
 
Пользуясь кодом
Код:
Развернуть Свернуть Копировать
//Отправка капчи из картинки
var captcha__get = project.Variables["captcha_put"].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("Anti-Captcha.dll", base64String, "");
// отрезаем лишнее
var tmp = result.Split(new [] {"-|-"}, StringSplitOptions.None);
if (tmp.Length > 1) return tmp[0];
return result;

Отправляю такую картинку
tempjpg_5264973_18543980.jpg

на антигате.
В ответ народ присылает совсем не то что надо...
Может надо на русс вангователей слать? Кто как думает?
И если так - ребят, помогите пож-та в этот код добавить отправку на русс версию капчей.
Спасибо!
 
В этой строке кода
var result = ZennoPoster.CaptchaRecognition("Anti-Captcha.dll", base64String, "");
последний параметр поставьте не пустоту, а "is_russian=1".
Это сообщит антигейту, чтобы каптчу разгадывал русский сотрудник.
 
  • Оценить
Реакции: APXOHT
еще можно отправить параметр что ответ должен быть числом. вроде is_number=1
но нужно проверить по их докам.
то есть формат is_russian=1&is_number=1
 
Была подобная капча,решил 22 вариантами ответа с екшеном если.Также можно в яндекс вводить, будет ответ выводиться.
 
капча сохраняется не в png а php файлом... так и должно быть???
 
капча сохраняется не в png а php файлом... так и должно быть???
Бывает и такое, приходится переименовывать таким образом : Файл - Переместить - в новом путе добавить расширение .png (не забываем указать и путь)

4bsdr423.yld_55e19120b06c1.png
 
разрешение капчи менять не обязательно.
 
Кстати да - работает и с .php
 
понимаю что тема старая. но я со всем мог разобраться поискав ответ на форуме. но данную проблему решить не могу. создавать новую тему смысла не вижу.
сделал заполнялку профиля в инсте через пост и гет запросы, все работает отлично до тех пор пока не выскочит капча.
сама картинка находится вот в этом коде.
Код:
Развернуть Свернуть Копировать
<noscript>
  <iframe src="https://www.google.com/recaptcha/api/noscript?k=6LfdRhITAAAAADt_--DAA2mAWS5KonHRG2VvyaWU" height="300" width="500" frameborder="0"></iframe><br />
  <textarea name="recaptcha_challenge_field" rows="3" cols="40"></textarea>
  <input type='hidden' name='recaptcha_response_field' value='manual_challenge' />
</noscript>
т.е. подгружается позже. как мне ее принудительно подгружать? целый день сижу с этой прблемой

если отдельно гет запросом выполнять команду по ссылке https://www.google.com/recaptcha/api/noscript?k=6LfdRhITAAAAADt_--DAA2mAWS5KonHRG2VvyaWU , то картинка есть, но уже не та что нужна =(
 

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