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

yourmind

Client
Регистрация
13.09.2010
Сообщения
245
Благодарностей
21
Баллы
18
Привет, делаю шаблоны с использованием GET/POST запросов, при выполнении встречаются капчи, выпарсил урл капчи, как можно ее отправить на сервис разгадывания?
 

lexone

Client
Регистрация
12.10.2012
Сообщения
420
Благодарностей
726
Баллы
93
Код:
//Отправка капчи из картинки
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 "сохранить как файл" )
 

Irbis

Client
Регистрация
02.03.2014
Сообщения
195
Благодарностей
120
Баллы
43
Код:
//Отправка капчи из картинки
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 "сохранить как файл" )
А если у каптчи защита стоит (при каждом запросе сервер отправляет новую каптчу), как тогда быть?
 

lexone

Client
Регистрация
12.10.2012
Сообщения
420
Благодарностей
726
Баллы
93
А если у каптчи защита стоит (при каждом запросе сервер отправляет новую каптчу), как тогда быть?
Нужно сохранить куки сессии и подгружать ее на адресе картинки.

Например:
У твиттера есть капча при регистрации
Мы заходим на страничку регистрации и сохраняем полученные куки
потом обращаемся к адресу капчи с ранее спарсеными куками и сохраняем ее (выше писал как).
 
  • Спасибо
Реакции: bigcajones и Irbis

yourmind

Client
Регистрация
13.09.2010
Сообщения
245
Благодарностей
21
Баллы
18
lexone, спасибо, все работает отлично!
 

Severip

Client
Регистрация
17.10.2013
Сообщения
346
Благодарностей
98
Баллы
28
Если куки не сохранять, картинку же сохранять через GET, а потом отправлять код уже разгаданной каптчи на нужный сервер, то вышеуказанный код работает, но сервер дает отлуп по каптче. Почему?
Если куки сохранять, то приведенный выше код не работает, пишет ошибку:
Выполнение действия CSharp OwnCode Недостаточно памяти.
Выполнение на этом экшене прерывается.
Что не так, куда копать?
 

Roman*

Client
Регистрация
25.09.2013
Сообщения
1 651
Благодарностей
655
Баллы
113
Застрял вчера так же на капче гетом.Буду шаманить сейчас,может получиться.То есть сначало берем гетом картинку в переменную, переменную вставляем вместо captcha__get путь до самой картинки. Будем надеятся что будет брать и отправлять, именно ту капчу, а не следующую.
 

LexxWork

Client
Регистрация
31.10.2013
Сообщения
1 190
Благодарностей
786
Баллы
113
я хочу упомянть что для успешности дейстивий на запросах лучше сначала проснифать все и уведить что там передеается в шапке и теле запроса для всего что вам нужно.
может оказаться что капча гетится с каким нибудь x-origin хедером или другими фишками похуже него.
 

lazybones

Client
Регистрация
08.02.2013
Сообщения
242
Благодарностей
31
Баллы
28
Код:
//Отправка капчи из картинки
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 "сохранить как файл" )
подскажите а в данном случае как сделать урл на жалобу, если капча разгадана не верно?
 

lazybones

Client
Регистрация
08.02.2013
Сообщения
242
Благодарностей
31
Баллы
28
ап темы, может кто помочь, по вопросу, который написан в предыдущем сообщении?
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 707
Баллы
113
url лежит в tmp[0], если (tmp.Length > 1)
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 707
Баллы
113
Регистрация
14.12.2014
Сообщения
28
Благодарностей
1
Баллы
3
Такая же проблема.
CSharp OwnCode Недостаточно памяти.
В проекте 2 капчи. первую отрабатывает, на второй спотыкается. Не знаю что и делать
 
Регистрация
14.12.2014
Сообщения
28
Благодарностей
1
Баллы
3
Дык никто не подскажет? обидно прост
 

LexxWork

Client
Регистрация
31.10.2013
Сообщения
1 190
Благодарностей
786
Баллы
113
Я никогда не пользовался методом со 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];
- этим пользовался
 
Последнее редактирование:

yourmind

Client
Регистрация
13.09.2010
Сообщения
245
Благодарностей
21
Баллы
18
скажите, как получить ссылку на жалобу на "неправильно разгаданную капчу" при данном способе отправки капчи в сервис?
пс: при использовании последнего метода в 3 строки
 

LexxWork

Client
Регистрация
31.10.2013
Сообщения
1 190
Благодарностей
786
Баллы
113
там вроде если .Split('-')[1] не "OK" то айди или урл на абуз. посмотри весь резалт и допили логику
// отрезаем лишнее

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

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

return result;
если это deathbycaptcha ссылка на абуз не возвращается
 

yourmind

Client
Регистрация
13.09.2010
Сообщения
245
Благодарностей
21
Баллы
18
там вроде если .Split('-')[1] не "OK" то айди или урл на абуз. посмотри весь резалт и допили логику

если это deathbycaptcha ссылка на абуз не возвращается
у тебя в примере в три строки нет же этого? из него можно вытянуть жалобный урл?
 

LexxWork

Client
Регистрация
31.10.2013
Сообщения
1 190
Благодарностей
786
Баллы
113
конечно можно, смотри весь результат и бери что тебе нужно
 

yourmind

Client
Регистрация
13.09.2010
Сообщения
245
Благодарностей
21
Баллы
18

ferr9918

Client
Регистрация
20.01.2014
Сообщения
199
Благодарностей
97
Баллы
28

APXOHT

Client
Регистрация
27.12.2013
Сообщения
879
Благодарностей
189
Баллы
43
Пользуясь кодом
Код:
//Отправка капчи из картинки
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;
Отправляю такую картинку

на антигате.
В ответ народ присылает совсем не то что надо...
Может надо на русс вангователей слать? Кто как думает?
И если так - ребят, помогите пож-та в этот код добавить отправку на русс версию капчей.
Спасибо!
 

evgen_po

Client
Регистрация
27.08.2013
Сообщения
847
Благодарностей
528
Баллы
93
В этой строке кода
var result = ZennoPoster.CaptchaRecognition("Anti-Captcha.dll", base64String, "");
последний параметр поставьте не пустоту, а "is_russian=1".
Это сообщит антигейту, чтобы каптчу разгадывал русский сотрудник.
 
  • Спасибо
Реакции: APXOHT

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 707
Баллы
113
еще можно отправить параметр что ответ должен быть числом. вроде is_number=1
но нужно проверить по их докам.
то есть формат is_russian=1&is_number=1
 

Roman*

Client
Регистрация
25.09.2013
Сообщения
1 651
Благодарностей
655
Баллы
113
Была подобная капча,решил 22 вариантами ответа с екшеном если.Также можно в яндекс вводить, будет ответ выводиться.
 

shved2

Client
Регистрация
16.07.2015
Сообщения
146
Благодарностей
53
Баллы
28
капча сохраняется не в png а php файлом... так и должно быть???
 

lexone

Client
Регистрация
12.10.2012
Сообщения
420
Благодарностей
726
Баллы
93
капча сохраняется не в png а php файлом... так и должно быть???
Бывает и такое, приходится переименовывать таким образом : Файл - Переместить - в новом путе добавить расширение .png (не забываем указать и путь)

 

rostonix

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

shved2

Client
Регистрация
16.07.2015
Сообщения
146
Благодарностей
53
Баллы
28
Кстати да - работает и с .php
 
Регистрация
04.12.2015
Сообщения
96
Благодарностей
26
Баллы
18
понимаю что тема старая. но я со всем мог разобраться поискав ответ на форуме. но данную проблему решить не могу. создавать новую тему смысла не вижу.
сделал заполнялку профиля в инсте через пост и гет запросы, все работает отлично до тех пор пока не выскочит капча.
сама картинка находится вот в этом коде.
Код:
<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)