Запрос на c# передача капчи

stalker0007

Client
Регистрация
14.09.2016
Сообщения
72
Благодарностей
0
Баллы
6
Помогите мужики передать капчу по с#

собственно нужно передать:

Link: site.com/capcha.php?={-Variable.id-} берется из переменной = получить по линку капчу
Useragent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0
Cookies: с переменной
Authorization: Bearer {-Variable.token-} = что бы брался с переменной токен


ну и заканчивалось все разгадкой в капмонстре с отправкой в переменную результат

//Отправка капчи из картинки
var captcha__get = project.Variables["Captcha_file"].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("CapMonster2.dll", base64String, "");
// отрезаем лишнее
var tmp = result.Split(new [] {"-|-"}, StringSplitOptions.None);
if (tmp.Length > 1) return tmp[0];

project.Variables["Captcha_answer"].Value = result;
return result;



Помогите кубиком пожалуйста
Выходит так что без авторизации и кук не та картинка капчи вот и мучаюсь...
 
Последнее редактирование:

Vlad_Curnoi

Client
Регистрация
09.08.2017
Сообщения
469
Благодарностей
198
Баллы
43
Помогите мужики передать капчу по с#

собственно нужно передать:

Link: site.com/capcha.php?={-Variable.id-} берется из переменной = получить по линку капчу
Useragent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0
Cookies: с переменной
Authorization: Bearer {-Variable.token-} = что бы брался с переменной токен


ну и заканчивалось все разгадкой в капмонстре с отправкой в переменную результат

//Отправка капчи из картинки
var captcha__get = project.Variables["Captcha_file"].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("CapMonster2.dll", base64String, "");
// отрезаем лишнее
var tmp = result.Split(new [] {"-|-"}, StringSplitOptions.None);
if (tmp.Length > 1) return tmp[0];

project.Variables["Captcha_answer"].Value = result;
return result;



Помогите кубиком пожалуйста
Выходит так что без авторизации и кук не та картинка капчи вот и мучаюсь...
Вы видимо смотрите в Project в браузере и видите например на капче 123 и тестово пытаетесь ее скачать через гет,при скачивании через гет у Вас картинка не 123 а 567.Если так то это нормально,при каждом обращении к скачиванию картинка будет меняться,главное чтоб куки были.
Или же у Вас не проходит авторизация?
 

stalker0007

Client
Регистрация
14.09.2016
Сообщения
72
Благодарностей
0
Баллы
6
Мне нужно добавить строки авторизации и куков что бы и то и другое бралось в с переменной к коду:

Код:
/Отправка капчи из картинки
var captcha__get = project.Variables["Captcha_file"].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("CapMonster2.dll", base64String, "");
// отрезаем лишнее
var tmp = result.Split(new [] {"-|-"}, StringSplitOptions.None);
if (tmp.Length > 1) return tmp[0];

project.Variables["Captcha_answer"].Value = result;
return result;
 

stalker0007

Client
Регистрация
14.09.2016
Сообщения
72
Благодарностей
0
Баллы
6
Мужики выручайте! как прицепить данные к отправке капчи в кап
 

Vlad_Curnoi

Client
Регистрация
09.08.2017
Сообщения
469
Благодарностей
198
Баллы
43

stalker0007

Client
Регистрация
14.09.2016
Сообщения
72
Благодарностей
0
Баллы
6

Vlad_Curnoi

Client
Регистрация
09.08.2017
Сообщения
469
Благодарностей
198
Баллы
43
Без куков и авторизации у меня неверная капча!
Get у меня все выходит но мне нужен c#
Для капмонстра куки не нужны он их ни как не воспринимает,Вы не правильно либо парсите куки либо не правильно передаете данные
 

stalker0007

Client
Регистрация
14.09.2016
Сообщения
72
Благодарностей
0
Баллы
6
Для капмонстра куки не нужны он их ни как не воспринимает,Вы не правильно либо парсите куки либо не правильно передаете данные
дак мне не нужно капмонстру куки передавать...

1.Скрипт в с# делает запрос на мой Link: site.com/capcha.php?={-Variable.id-}
опычный get только в c# с куками и данными что нужны
2. дальше продолжается код тем что передает фото капмонстру и получает ответ в переменную.

У меня уже есть готовый вариант но он совсем для другого сайта и там свои проблемы были токены и прочая дрянь переделать не удается код я не знаю c# по этому нуждаюсь в помощи!

-----------

Проблем в том что я на get сделал все окей с куками и авторизацией, проблема в том что многопоток не пашет нормально! если взят потоков больше 5-10 он начинает путаться в папке с капчами то есть одновременно задает одно и тоже имя капче.jpg и не может сохранить или прочитать и в итоге ошибка!
 

Vlad_Curnoi

Client
Регистрация
09.08.2017
Сообщения
469
Благодарностей
198
Баллы
43
Я про это.
как прицепить данные к отправке капчи в кап
Вот примерно так,скачивает файл и отправляет на разгадку,код не тестил щас так как с мобилы
Код:
string url_site = "http://vk.com";
string proxy = "proxy";
string useragent = "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36";
string cookie = "cookie";
string downloadPath = project.Directory + "\\captcha\\";
string referrer = "http://urlreferer.ru";
//
string answer = String.Empty;
//
try
{
    var file = ZennoPoster.HttpGet(
        url_site,
        proxy,
        "UTF8",
        ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.File,
        60000,
        cookie,
        useragent,
        false,
        1,
        null,
        downloadPath
        );
}
    catch (Exception ex)
    {
    throw new Exception("Не удалось скачать файл");
}
//
//
try
    {
        if (!File.Exists(file))
        {
        throw new Exception("Не удалось скачать файл");
        }
        var bytes = File.ReadAllBytes(file);
        if (bytes.Length < 1024)
        {
            throw new Exception("Битый файл");
        }
        string str = Convert.ToBase64String(bytes);
        var rc = ZennoPoster.CaptchaRecognition("CapMonster2.dll", str, "");
        answer = rc.Split(new [] {"-|-"}, StringSplitOptions.RemoveEmptyEntries)[0];
    }
    finally
    {
        if (File.Exists(file))
        {
            File.Delete(file);
        }
    }
return answer;
 
  • Спасибо
Реакции: viol2021

Vlad_Curnoi

Client
Регистрация
09.08.2017
Сообщения
469
Благодарностей
198
Баллы
43
Проблем в том что я на get сделал все окей с куками и авторизацией, проблема в том что многопоток не пашет нормально! если взят потоков больше 5-10 он начинает путаться в папке с капчами то есть одновременно задает одно и тоже имя капче.jpg и не может сохранить или прочитать и в итоге ошибка!
тут уже Вам надо либо под каждый запрос создавать папку и сохранять каждую капчу в отдельную папку после удалять либо использовать сторонние библиотеки
 

stalker0007

Client
Регистрация
14.09.2016
Сообщения
72
Благодарностей
0
Баллы
6
тут уже Вам надо либо под каждый запрос создавать папку и сохранять каждую капчу в отдельную папку после удалять либо использовать сторонние библиотеки
выше код в чем то не верный сам не работает и другим блокам не дает работать везде ошибка. Спасибо что попробовали
насчет отдельной папки это я тоже знал но это выкрутится называется и возни деление базы и так далее, думал может кто кодом поможет c#
 

Vlad_Curnoi

Client
Регистрация
09.08.2017
Сообщения
469
Благодарностей
198
Баллы
43
выше код в чем то не верный сам не работает и другим блокам не дает работать везде ошибка. Спасибо что попробовали
насчет отдельной папки это я тоже знал но это выкрутится называется и возни деление базы и так далее, думал может кто кодом поможет c#
1.Что именно не работает и какая ошибка?
2.Вам пытаются помочь но Вы ничего толкого не предоставляете для более быстрой помощи.
3.Код не работал так как переменную не туда вынес и это отобразилось в логе (могли бы это написать или сами исправить).
Вот код только что проверил все работает,скачивает,отправляет,получает ответ и удаляет.
Код:
string url_site = "";
string proxy = "";
string useragent = "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36";
string cookie = "";
string downloadPath = project.Directory + @"\captcha\";
string referrer = "http://urlreferer.ru";
//
string answer = string.Empty;
var file = string.Empty;
//
try
{
    file = ZennoPoster.HttpGet(
        url_site,
        proxy,
        "UTF8",
        ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.File,
        60000,
        cookie,
        useragent,
        false,
        1,
        null,
        downloadPath
        );
}
    catch (Exception ex)
    {
    throw new Exception("Не удалось скачать файл");
}
//
//
try
    {
        if (!File.Exists(file))
        {
        throw new Exception("Не удалось скачать файл");
        }
        var bytes = File.ReadAllBytes(file);
        if (bytes.Length < 1024)
        {
            throw new Exception("Битый файл");
        }
        string str = Convert.ToBase64String(bytes);
        var rc = ZennoPoster.CaptchaRecognition("CapMonster2.dll", str, "");
        answer = rc.Split(new [] {"-|-"}, StringSplitOptions.RemoveEmptyEntries)[0];
    }
    finally
    {
        if (File.Exists(file))
        {
            File.Delete(file);
        }
    }
return answer;
 
  • Спасибо
Реакции: stalker0007

stalker0007

Client
Регистрация
14.09.2016
Сообщения
72
Благодарностей
0
Баллы
6
сейчас работает, скажите как можно добавить 1 строку авторизации

в get запрос идет вот то что я передаю в юзерагенте
Код:
Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Authorization: Bearer {-Variable.token-}
Connection: keep-alive
мне нужно передать Authorization: Bearer {-Variable.token-} добавив в код что вы скинули выше
 

Vlad_Curnoi

Client
Регистрация
09.08.2017
Сообщения
469
Благодарностей
198
Баллы
43
сейчас работает, скажите как можно добавить 1 строку авторизации

в get запрос идет вот то что я передаю в юзерагенте
Код:
Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Authorization: Bearer {-Variable.token-}
Connection: keep-alive
мне нужно передать Authorization: Bearer {-Variable.token-} добавив в код что вы скинули выше
Ну так Вы же его передаете,отпраьте запос и посмотрите в траффике этот запрос какие данные передаются
Пример :
2018-04-22_125119.png
 

stalker0007

Client
Регистрация
14.09.2016
Сообщения
72
Благодарностей
0
Баллы
6
я имею введу передать его теперь в c# в коде что вы мне скинули

Код:
string url_site = "";
string proxy = "";
string useragent = "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36";
string cookie = "";
string downloadPath = project.Directory + @"\captcha\";
string referrer = "http://urlreferer.ru";

думал что получится так string Authorization= ""; но обломался
 

Vlad_Curnoi

Client
Регистрация
09.08.2017
Сообщения
469
Благодарностей
198
Баллы
43
я имею введу передать его теперь в c# в коде что вы мне скинули

Код:
string url_site = project.Variables["url_site"].Value;
string proxy = project.Variables["proxy"].Value;
string useragent = project.Variables["useragent"].Value;
string cookie = project.Variables["cookie"].Value;
string token = project.Variables["token"].Value;
string downloadPath = project.Directory + @"\captcha\";
string referrer = "http://urlreferer.ru";

думал что получится так string Authorization= ""; но обломался
Пробуйте
Код:
string url_site = project.Variables["url_site"].Value;
string proxy = project.Variables["proxy"].Value;
string useragent = project.Variables["useragent"].Value;
string cookie = project.Variables["cookie"].Value;
string token = project.Variables["token"].Value;
string downloadPath = project.Directory + @"\captcha\";
string referrer = "http://urlreferer.ru";
//
string answer = string.Empty;
var file = string.Empty;
//Заголовки
string[] additionalHeaders =  {
"Accept: */*",
"Accept-Language: en-US,en;q=0.5",
"Accept-Encoding: gzip, deflate",
"Content-Type: application/x-www-form-urlencoded",
"Authorization: Bearer" + token,
"Connection: keep-alive"};
//
try
{
    file = ZennoPoster.HttpGet(
        url_site,
        proxy,
        "UTF8",
        ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.File,
        60000,
        cookie,
        useragent,
        false,
        1,
        additionalHeaders,
        downloadPath
        );
}
    catch (Exception ex)
    {
    throw new Exception("Не удалось скачать файл");
}
//
//
try
    {
        if (!File.Exists(file))
        {
        throw new Exception("Не удалось скачать файл");
        }
        var bytes = File.ReadAllBytes(file);
        if (bytes.Length < 1024)
        {
            throw new Exception("Битый файл");
        }
        string str = Convert.ToBase64String(bytes);
        var rc = ZennoPoster.CaptchaRecognition("CapMonster2.dll", str, "");
        answer = rc.Split(new [] {"-|-"}, StringSplitOptions.RemoveEmptyEntries)[0];
    }
    finally
    {
        if (File.Exists(file))
        {
            File.Delete(file);
        }
    }
return answer;
 
Последнее редактирование:

stalker0007

Client
Регистрация
14.09.2016
Сообщения
72
Благодарностей
0
Баллы
6

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
Код:
"Authorization: Bearer " + token,
 

Vlad_Curnoi

Client
Регистрация
09.08.2017
Сообщения
469
Благодарностей
198
Баллы
43
посмотрите что то с кавычками
"Authorization: Bearer" + token,


пробовал закрывать
"Authorization: Bearer" + "token",
и ещё пару вариантов но не передает сам токен что в переменной
А блин забыл в верх допишите
string token = project.Variables["token"].Value;
 
  • Спасибо
Реакции: stalker0007

stalker0007

Client
Регистрация
14.09.2016
Сообщения
72
Благодарностей
0
Баллы
6
Идеально все пашет! Спасибо большое!
 

Vlad_Curnoi

Client
Регистрация
09.08.2017
Сообщения
469
Благодарностей
198
Баллы
43
  • Спасибо
Реакции: stalker0007

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