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

  • Автор темы Автор темы ipetrov
  • Дата начала Дата начала
Как обычно: чтобы отправить жалобу, нужно сделать GET запрос к урлу, который лежит в переменной жалобы
 
Как обычно: чтобы отправить жалобу, нужно сделать GET запрос к урлу, который лежит в переменной жалобы
Так и сделал, просто был некий шаблон, созданный "крутым" парнем. надо было не разбираться что там накручено, всё равно не работало, а сразу самостоятельно сделать. Но... лень человеческая,- великая сила!
 
Так и сделал, просто был некий шаблон, созданный "крутым" парнем. надо было не разбираться что там накручено, всё равно не работало, а сразу самостоятельно сделать. Но... лень человеческая,- великая сила!

В итоге пришлось разобраться, еще и подучился? :)
 
Привет. Заранее извиняюсь за возможно глупый вопрос. В 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/thre...et-pomogite-otlovit-oshibku.14136/#post-84767

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

http://bitrain.club/

... чтобы получить ссылку капчи или аудио капчи для дальнейшей её отправки на сервис распознавания капчь rucapcha?. Заранее спасибо.
 
...вот кусок кода, есть только 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"
 
...вот кусок кода, есть только 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 секунд, как ты ее на пост гете собрался обходить?
 
да хоть пусть 200 стоит, не вижу защиты
 
Ну некоторые без js работают,а некоторые нет, может я чего то не знаю, может быть и все обходятся.
 
js тут вообще не при чём, всё на гетах
 
:-) так как-же, как получить URL капчи или аудио-капчи?
 
идём на сайт, получаем всё что нам надо, отправляем что надо и получаем ответ ))) примерно так
 
...подскажите алгоритм. предполагаю, нужно скачать полностью файл со всем содержимым, после чего найти нужный кусок JS, воспроизвести и получить результат. далёк от логики, не судите строго, просто подскажите в каком месте копать :-)
 
...подскажите алгоритм. предполагаю, нужно скачать полностью файл со всем содержимым, после чего найти нужный кусок JS, воспроизвести и получить результат. далёк от логики, не судите строго, просто подскажите в каком месте копать :-)
а для чего тогда снипет если далёк ?? воспользуйся кодом с вики зено
 
... браузер не используем, только GET запрос
 
...изучаю C#, вижу в этом перспективу, к тому-же у меня в шаблоне используется код
Parallel.ForEach
 
... браузер не используем, только GET запрос
не думаю что на гет тут просто выложат в открытую, всего два человека написали на форуме кто это сделал, ну может ещё миллион людей сделали но молчат и делают свои работы
 
не думаю что на гет тут просто выложат в открытую, всего два человека написали на форуме кто это сделал, ну может ещё миллион людей сделали но молчат и делают свои работы
Я с Вами полностью согласен. Вообще, интересует тема "параллельные запросы". На форуме была статья на эту тему
http://zennolab.com/discussion/threads/parallelnye-zaprosy.19609/#post-127082
пытаюсь модернезировать под свои нужды. "ibred" задавал вопрос "Сижу изучаю "параллельные запросы", очень интересная тема.
Шлю лучи благодарности, отдал свой голос за статью ещё на старте голосования.

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

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

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

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

...думаю, этот кусок кода будет многим полезен. Да , не могу осилить капчу:-)
 
...для каждого потока свой прокси, плюс сохраняет в текстовом формате ответы гет-пост
 
не думаю что он так сильно полезен так как его ещё надо обработать до самого конца а не просто подать один запрос )
 
..не один запрос а список
var list = project.Lists["list"].ToList(); // list - исходный список
тестировал , результатом доволен.список отрабатывает шустро. В обычном режиме цикл 3-5 часов со списком 200 переменных, а с этим кодом-минуты!
 
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.
 
... с капчай загвоздка, всю малину портит. как URL получить?
 
ну я понял тебя, напиши теперь логику дальше параллельного запроса что бы это всё в сто потоков и продолжалось коль начел об этом, если ты выйдейшь из этого метода то всё прервётся, всё что ты хочешь в парралель должно быть отработано на ура ну покрайней мере в зенке
 

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