Разгадываем капчу через С# сниппет. Помогите отловить ошибку

rostonix

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

Valiksim

Client
Регистрация
14.04.2012
Сообщения
1 344
Благодарностей
298
Баллы
83
Как обычно: чтобы отправить жалобу, нужно сделать GET запрос к урлу, который лежит в переменной жалобы
Так и сделал, просто был некий шаблон, созданный "крутым" парнем. надо было не разбираться что там накручено, всё равно не работало, а сразу самостоятельно сделать. Но... лень человеческая,- великая сила!
 

ZennoScript

Moderator
Регистрация
04.03.2011
Сообщения
4 452
Благодарностей
1 886
Баллы
113
Так и сделал, просто был некий шаблон, созданный "крутым" парнем. надо было не разбираться что там накручено, всё равно не работало, а сразу самостоятельно сделать. Но... лень человеческая,- великая сила!
В итоге пришлось разобраться, еще и подучился? :-)
 

Valiksim

Client
Регистрация
14.04.2012
Сообщения
1 344
Благодарностей
298
Баллы
83

Andron

Client
Регистрация
08.04.2015
Сообщения
222
Благодарностей
10
Баллы
18
Привет. Заранее извиняюсь за возможно глупый вопрос. В c# вообще не шарю. Картинка с капчей уже скачана осталось только отправить её на разгадывание. Подскажите код, и как применять.

Как я понял в этом коде решается моя задача, но я не пойму где нужно указать путь к файлу.
//Отправка капчи из картинки
  1. var captcha__get = project.Variables["captcha__get"].Value;
  2. var image = System.Drawing.Image.FromFile(@captcha__get);

  3. string base64String = String.Empty;

  4. using (System.IO.MemoryStream ms = new System.IO.MemoryStream())
  5. {
  6. image.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
  7. byte[] imageBytes = ms.ToArray();

  8. base64String = Convert.ToBase64String(imageBytes);
  9. }

  10. var result = ZennoPoster.CaptchaRecognition("Anti-Captcha.dll", base64String, "");
  11. // отрезаем лишнее
  12. var tmp = result.Split(new [] {"-|-"}, StringSplitOptions.None);
  13. if (tmp.Length > 1) return tmp[0];
  14. return result;
Цитата с поста http://zennolab.com/discussion/threads/razgadyvaem-kapchu-cherez-s-snippet-pomogite-otlovit-oshibku.14136/#post-84767

Спасибо
 

Andron

Client
Регистрация
08.04.2015
Сообщения
222
Благодарностей
10
Баллы
18
Спасибо, разобрался сам. В переменную "captcha__get" поместил пусть к картинке с капчей.
 

Iaroslav

Client
Регистрация
09.12.2015
Сообщения
61
Благодарностей
5
Баллы
8
Доброго дня, форумчане! У меня вопрос следующего характера: шаблон построен на GET/Post шаблонах. Как GET запросом получить ссылку на скачивание капчи или аудио-капчи ? В ответе GET запроса есть только ссылка на JS, который и генерирует нужный код. Как правильно отправить запрос? Может надо полностью скачивать файл со всем содержимым и потом производить какие-то действия? Я далёк от C#, логику с трудом понимаю. Помогите разобраться.
К примеру, как правильно отправить запрос к сайту:

http://bitrain.club/

... чтобы получить ссылку капчи или аудио капчи для дальнейшей её отправки на сервис распознавания капчь rucapcha?. Заранее спасибо.
 

Iaroslav

Client
Регистрация
09.12.2015
Сообщения
61
Благодарностей
5
Баллы
8
...вот кусок кода, есть только JS

Код:
<script src="https://www.google.com/recaptcha/api.js" async defer></script>
<div class="g-recaptcha" data-sitekey="6LdkVAoTAAAAAF44qt04MfVleLzmJMzQg4O3NzjK"></div>
<noscript>
  <div style="width: 302px; height: 352px;">
    <div style="width: 302px; height: 352px; position: relative;">
      <div style="width: 302px; height: 352px; position: absolute;">
        <iframe src="https://www.google.com/recaptcha/api/fallback?k=6LdkVAoTAAAAAF44qt04MfVleLzmJMzQg4O3NzjK"
 

Roman*

Client
Регистрация
25.09.2013
Сообщения
1 657
Благодарностей
656
Баллы
113
...вот кусок кода, есть только JS

Код:
<script src="https://www.google.com/recaptcha/api.js" async defer></script>
<div class="g-recaptcha" data-sitekey="6LdkVAoTAAAAAF44qt04MfVleLzmJMzQg4O3NzjK"></div>
<noscript>
  <div style="width: 302px; height: 352px;">
    <div style="width: 302px; height: 352px; position: relative;">
      <div style="width: 302px; height: 352px; position: absolute;">
        <iframe src="https://www.google.com/recaptcha/api/fallback?k=6LdkVAoTAAAAAF44qt04MfVleLzmJMzQg4O3NzjK"
Ты не забывай что тут стоит защита на кнопке 45 секунд, как ты ее на пост гете собрался обходить?
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 375
Благодарностей
2 041
Баллы
113
да хоть пусть 200 стоит, не вижу защиты
 

Roman*

Client
Регистрация
25.09.2013
Сообщения
1 657
Благодарностей
656
Баллы
113
Ну некоторые без js работают,а некоторые нет, может я чего то не знаю, может быть и все обходятся.
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 375
Благодарностей
2 041
Баллы
113
js тут вообще не при чём, всё на гетах
 

Iaroslav

Client
Регистрация
09.12.2015
Сообщения
61
Благодарностей
5
Баллы
8
:-) так как-же, как получить URL капчи или аудио-капчи?
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 375
Благодарностей
2 041
Баллы
113

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 375
Благодарностей
2 041
Баллы
113
идём на сайт, получаем всё что нам надо, отправляем что надо и получаем ответ ))) примерно так
 

Iaroslav

Client
Регистрация
09.12.2015
Сообщения
61
Благодарностей
5
Баллы
8
...подскажите алгоритм. предполагаю, нужно скачать полностью файл со всем содержимым, после чего найти нужный кусок JS, воспроизвести и получить результат. далёк от логики, не судите строго, просто подскажите в каком месте копать :-)
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 375
Благодарностей
2 041
Баллы
113
...подскажите алгоритм. предполагаю, нужно скачать полностью файл со всем содержимым, после чего найти нужный кусок JS, воспроизвести и получить результат. далёк от логики, не судите строго, просто подскажите в каком месте копать :-)
а для чего тогда снипет если далёк ?? воспользуйся кодом с вики зено
 

Iaroslav

Client
Регистрация
09.12.2015
Сообщения
61
Благодарностей
5
Баллы
8
... браузер не используем, только GET запрос
 

Iaroslav

Client
Регистрация
09.12.2015
Сообщения
61
Благодарностей
5
Баллы
8
...изучаю C#, вижу в этом перспективу, к тому-же у меня в шаблоне используется код
Parallel.ForEach
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 375
Благодарностей
2 041
Баллы
113
... браузер не используем, только GET запрос
не думаю что на гет тут просто выложат в открытую, всего два человека написали на форуме кто это сделал, ну может ещё миллион людей сделали но молчат и делают свои работы
 

Iaroslav

Client
Регистрация
09.12.2015
Сообщения
61
Благодарностей
5
Баллы
8
не думаю что на гет тут просто выложат в открытую, всего два человека написали на форуме кто это сделал, ну может ещё миллион людей сделали но молчат и делают свои работы
Я с Вами полностью согласен. Вообще, интересует тема "параллельные запросы". На форуме была статья на эту тему
http://zennolab.com/discussion/threads/parallelnye-zaprosy.19609/#post-127082
пытаюсь модернезировать под свои нужды. "ibred" задавал вопрос "Сижу изучаю "параллельные запросы", очень интересная тема.
Шлю лучи благодарности, отдал свой голос за статью ещё на старте голосования.

У меня вот только затыки, не понимаю, как реализовать: отправлять 3 GET запроса (параллельно) и получать ответ (содержание) в 3 разные переменные." ответ "Nick" -"никак) а зачем?" На самом деле можно получать параллельно ответы в текстовом формате, возможно и в переменные, но до этого пока не дошёл. Пока всё работает но вот загвоздка с капчами. Вот и прошу помощи как бороться с этим змеем.
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 375
Благодарностей
2 041
Баллы
113
http://zennolab.com/discussion/threads/shablony-na-zakaz.23834/

на этом же принципе, запускал в РМ более чем 1000 потоков, в РМ а ЗР, и каптчу щёлкает как надо

есть проект где рекаптча2 и так же всё вери гуд, но та была статья конкурсная, и если кто выложит эту тему открыто то понимает что это сдохнет через пару дней, так как уже вместо аудио стали подставлять другое
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 375
Благодарностей
2 041
Баллы
113
Я с Вами полностью согласен. Вообще, интересует тема "параллельные запросы". На форуме была статья на эту тему
http://zennolab.com/discussion/threads/parallelnye-zaprosy.19609/#post-127082
пытаюсь модернезировать под свои нужды. "ibred" задавал вопрос "Сижу изучаю "параллельные запросы", очень интересная тема.
Шлю лучи благодарности, отдал свой голос за статью ещё на старте голосования.

У меня вот только затыки, не понимаю, как реализовать: отправлять 3 GET запроса (параллельно) и получать ответ (содержание) в 3 разные переменные." ответ "Nick" -"никак) а зачем?" На самом деле можно получать параллельно ответы в текстовом формате, возможно и в переменные, но до этого пока не дошёл. Пока всё работает но вот загвоздка с капчами. Вот и прошу помощи как бороться с этим змеем.
Смог осилить параллельные запросы как выше писал в чём проблема осилить рекаптчу на гетах ??
 

Iaroslav

Client
Регистрация
09.12.2015
Сообщения
61
Благодарностей
5
Баллы
8
var list = project.Lists["list"].ToList(); // list - исходный список
System.Threading.Tasks.Parallel.ForEach(list, p => {
var pr = ZennoPoster.GetProxyWithOutDelete("");
var resultPost = ZennoPoster.HttpPost(
url,
data,
"application/x-www-form-urlencoded",
pr,
"UTF-8",
ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.HeaderAndBody,
50000,"",
cookie,
project.Profile.UserAgent,
true,
5);
project.SendInfoToLog(p+" proxy: "+pr,true); // прокси в лог
project.SendInfoToLog(p+" RezultHttpPost "+resultPost,true); //ответ в лог

var pathtosave = project.Directory+"\\"+p+".txt"; // сохраняем в файл
System.IO.File.WriteAllText(pathtosave, resultPost);
}

...думаю, этот кусок кода будет многим полезен. Да , не могу осилить капчу:-)
 

Iaroslav

Client
Регистрация
09.12.2015
Сообщения
61
Благодарностей
5
Баллы
8
...для каждого потока свой прокси, плюс сохраняет в текстовом формате ответы гет-пост
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 375
Благодарностей
2 041
Баллы
113
не думаю что он так сильно полезен так как его ещё надо обработать до самого конца а не просто подать один запрос )
 

Iaroslav

Client
Регистрация
09.12.2015
Сообщения
61
Благодарностей
5
Баллы
8
..не один запрос а список
var list = project.Lists["list"].ToList(); // list - исходный список
тестировал , результатом доволен.список отрабатывает шустро. В обычном режиме цикл 3-5 часов со списком 200 переменных, а с этим кодом-минуты!
 

Iaroslav

Client
Регистрация
09.12.2015
Сообщения
61
Благодарностей
5
Баллы
8
var list = project.Lists["list"].ToList(); // list - исходный список

System.Threading.Tasks.Parallel.ForEach(list, p => {
var pr = ZennoPoster.GetProxyWithOutDelete(""); // уникальный прокси
var resultPost = ZennoPoster.HttpPost/Get(..........
..........;

project.SendInfoToLog(p+" proxy: "+pr,true); // прокси в лог
project.SendInfoToLog(p+" RezultHttpPost "+resultPost,true); //ответ в лог

var pathtosave = project.Directory+"\\"+p+".txt"; // сохраняем в файл
System.IO.File.WriteAllText(pathtosave, resultPost);
}

отработает весь список с уникальным IP и сохранит в txt.
 

Iaroslav

Client
Регистрация
09.12.2015
Сообщения
61
Благодарностей
5
Баллы
8
... с капчай загвоздка, всю малину портит. как URL получить?
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 375
Благодарностей
2 041
Баллы
113
ну я понял тебя, напиши теперь логику дальше параллельного запроса что бы это всё в сто потоков и продолжалось коль начел об этом, если ты выйдейшь из этого метода то всё прервётся, всё что ты хочешь в парралель должно быть отработано на ура ну покрайней мере в зенке
 

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