HCaptcha - решаем с помощью ИИ в браузере.

btr

Client
Регистрация
21.09.2015
Сообщения
71
Благодарностей
15
Баллы
8
zennoposter 7.6.0 пытаюсь на GPU запустить разгадывание в несколько потоков(5) падает зенка во время решения капчи, в чем может быть проблема?
C#:
instance.UseFullMouseEmulation = false;
Tab tab = instance.ActiveTab;
HtmlElement el = null;
HtmlElementCollection elms = null;

var gpucfg = new GpuConfig();
string yoloNames = [email protected]"\coco.names";
string yoloCfg = [email protected]"\yolov3.cfg";
string yoloWeights = [email protected]"\yolov3.weights";

var config = new YoloConfiguration(yoloCfg, yoloWeights, yoloNames);
YoloWrapper yolo = new YoloWrapper(config, gpucfg);

el = tab.FindElementByXPath("//*[@id='checkbox']", 0);
if(el.OuterHtml.Contains("checkbox checked"))
{
   
    return "";
}
el.Click();
Thread.Sleep(2000);

for(int n = 0; n < 10; n++)
{
    for(int i = 0; i < 10; i++)
    {
        Thread.Sleep(500);
        el = tab.FindElementByXPath("//div[contains(@class, 'task-grid')]", 0);
        if(!el.IsVoid && el.DisplacementInBrowser.X > 0)
            break;
        el = tab.FindElementByXPath("//*[@id='checkbox']", 0);
        if(el.OuterHtml.Contains("checkbox checked"))
        {
            return "";
        }
    }
   
    string task = tab.FindElementByXPath("//div[@class='prompt-padding']/div[@class='prompt-text']", 0).InnerText;
    project.SendInfoToLog(task);
   
    elms = tab.FindElementsByXPath("//div[contains(@class, 'task-grid')]/div[@class='task-image']");
    foreach(var elm in elms)
    {
        tab.FullEmulationMouseMoveToHtmlElement(elm);
        var items = yolo.Detect(Convert.FromBase64String(elm.DrawToBitmap(false)).ToArray()).ToList();
        foreach(var item in items)
        {
            if(!task.ToLower().Contains(item.Type.ToLower()))
                continue;
            tab.FullEmulationMouseClick("left", "click");
            break;
        }
    }
   
    Thread.Sleep(500);
    el = tab.FindElementByXPath("//div[contains(@class,'button-submit')]", 0);
    tab.FullEmulationMouseMoveToHtmlElement(el);
    tab.FullEmulationMouseClick("left", "click");
   
    Thread.Sleep(500);
   
    if(tab.FindElementByXPath("//div[contains(@class, 'task-grid')]", 0).IsVoid)
        break;
}
В 1 поток работает нормально.
 
Последнее редактирование:

malysh

Client
Регистрация
27.07.2017
Сообщения
406
Благодарностей
52
Баллы
28
такая же фигня
Выполнение действия CSharp OwnCode. Microsoft Visual C++ 2017-2019 Redistributable (x64)
проверял для интереса, сам пользуюсь нейронкой на python, как пример https://disk.yandex.ru/d/o4pJiarIWF9ZQQ
 
Последнее редактирование:

amyboose

Client
Регистрация
21.04.2016
Сообщения
2 311
Благодарностей
1 176
Баллы
113

kokoko

Client
Регистрация
23.06.2016
Сообщения
249
Благодарностей
19
Баллы
18
распознаю через нейросеть на питоне
ууу а я уже который месяц думаю ))сам писал сетку ?) я вот изучаю сети и как раз думал об этих капчах и тоже питонист ) инфой не поделишься ?Качал картинки и обучал рандомными кликами или же на сервисы отправлял?) если качал то какой объем данных?
 
Последнее редактирование:

malysh

Client
Регистрация
27.07.2017
Сообщения
406
Благодарностей
52
Баллы
28
ууу а я уже который месяц думаю ))сам писал сетку ?) я вот изучаю сети и как раз думал об этих капчах и тоже питонист ) инфой не поделишься ?Качал картинки и обучал рандомными кликами или же на сервисы отправлял?) если качал то какой объем данных?
просто собирал свои исходные данные для каждого класса картинки в отдельную папку, собирал тупо зенкой, потом, распределял вручную, получился дата сет, ну потом уже код конвертирует картинки из png в base64 , для обучения и отдельно для проверки модели, объём данных небольшой каждого класса картинок 600-700 шт, обучал не с нуля , а на тенсорфлоу керас
 
  • Спасибо
Реакции: ridrs и kokoko

kokoko

Client
Регистрация
23.06.2016
Сообщения
249
Благодарностей
19
Баллы
18
просто собирал свои исходные данные для каждого класса картинки в отдельную папку, собирал тупо зенкой, потом, распределял вручную, получился дата сет, ну потом уже код конвертирует картинки из png в base64 , для обучения и отдельно для проверки модели, объём данных небольшой каждого класса картинок 600-700 шт, обучал не с нуля , а на тенсорфлоу керас
я как раз подошёл к изучению keras ) значит самое трудное это руками отсортировать картинки ?) я почему то думал что в много поток заходишь под проксями на сайт капчи, картинки предварительно сохраняешь в отдельную папку, рандомно кликаешь , (конечно % решения при рандомных кликах будет никакой, но зато от рутины меньше),в случае успеха обучаешь сеть и картинки которые нажал перекидываешь в нужный раздел. Сколько слоев сетки ? и что использовал для активации нейрона?
 

btr

Client
Регистрация
21.09.2015
Сообщения
71
Благодарностей
15
Баллы
8
просто собирал свои исходные данные для каждого класса картинки в отдельную папку, собирал тупо зенкой, потом, распределял вручную, получился дата сет, ну потом уже код конвертирует картинки из png в base64 , для обучения и отдельно для проверки модели, объём данных небольшой каждого класса картинок 600-700 шт, обучал не с нуля , а на тенсорфлоу керас
в многопоток нормально работает? скинь линки какую нейронку юзаешь, или на базе какой обучал.
 

7make

Client
Регистрация
25.06.2011
Сообщения
1 547
Благодарностей
1 306
Баллы
113

Обращаем Ваше внимание на то, что данный пользователь заблокирован.
Не рекомендуем проводить с 7make какие-либо сделки.

zennoposter 7.6.0 пытаюсь на GPU запустить разгадывание в несколько потоков(5) падает зенка во время решения капчи, в чем может быть проблема?
C#:
instance.UseFullMouseEmulation = false;
Tab tab = instance.ActiveTab;
HtmlElement el = null;
HtmlElementCollection elms = null;

var gpucfg = new GpuConfig();
string yoloNames = [email protected]"\coco.names";
string yoloCfg = [email protected]"\yolov3.cfg";
string yoloWeights = [email protected]"\yolov3.weights";

var config = new YoloConfiguration(yoloCfg, yoloWeights, yoloNames);
YoloWrapper yolo = new YoloWrapper(config, gpucfg);

el = tab.FindElementByXPath("//*[@id='checkbox']", 0);
if(el.OuterHtml.Contains("checkbox checked"))
{
  
    return "";
}
el.Click();
Thread.Sleep(2000);

for(int n = 0; n < 10; n++)
{
    for(int i = 0; i < 10; i++)
    {
        Thread.Sleep(500);
        el = tab.FindElementByXPath("//div[contains(@class, 'task-grid')]", 0);
        if(!el.IsVoid && el.DisplacementInBrowser.X > 0)
            break;
        el = tab.FindElementByXPath("//*[@id='checkbox']", 0);
        if(el.OuterHtml.Contains("checkbox checked"))
        {
            return "";
        }
    }
  
    string task = tab.FindElementByXPath("//div[@class='prompt-padding']/div[@class='prompt-text']", 0).InnerText;
    project.SendInfoToLog(task);
  
    elms = tab.FindElementsByXPath("//div[contains(@class, 'task-grid')]/div[@class='task-image']");
    foreach(var elm in elms)
    {
        tab.FullEmulationMouseMoveToHtmlElement(elm);
        var items = yolo.Detect(Convert.FromBase64String(elm.DrawToBitmap(false)).ToArray()).ToList();
        foreach(var item in items)
        {
            if(!task.ToLower().Contains(item.Type.ToLower()))
                continue;
            tab.FullEmulationMouseClick("left", "click");
            break;
        }
    }
  
    Thread.Sleep(500);
    el = tab.FindElementByXPath("//div[contains(@class,'button-submit')]", 0);
    tab.FullEmulationMouseMoveToHtmlElement(el);
    tab.FullEmulationMouseClick("left", "click");
  
    Thread.Sleep(500);
  
    if(tab.FindElementByXPath("//div[contains(@class, 'task-grid')]", 0).IsVoid)
        break;
}
В 1 поток работает нормально.
в том что CPU / GPU имеют разную архитектуру.
CPU - условно делимый ресурс. можно параллелить по ядрам и потокам
GPU - не делимый ресурс. имеет 1 входную дверь (1 сессию) за которой уже миллиарды куда ядер. но дверь одна. кто первый взял- того и тапки. когда приходит запрос на новую сессию, первая отпускается.

поэтому чтобы гадать на гпу, нужно грузить его батчами (пачками) пропихивать.
размер батча подбирают от размера видеопамяти гпу. так-же подбирают входные тензоры у нейронок.

все что в паблике лежит, это академ решения, чисто показать сами архитектуры и не более.
оно не юзабельно в том виде как вы думаете/хотите чтобы оно работало.

чтобы сделать юзабельный и производительный вариант, нужно помимо обучения понимать все параметры, так и еще и архитектуру делать правильную. как минимум отдельно веб сервер (апишка) + сервер ядра (гпу) + кеш = это минимально такой набор лоу левел.
 
  • Спасибо
Реакции: Lord_Alfred, kokoko и btr

malysh

Client
Регистрация
27.07.2017
Сообщения
406
Благодарностей
52
Баллы
28
в многопоток нормально работает? скинь линки какую нейронку юзаешь, или на базе какой обучал.
нормально многопоток работает через пост запросы, можно сделать ещё лучше, но у меня на серваке стоит процессор, который не поддерживает AVX инструкции, да и вообще интелы не поддерживают AVX, по крайней мере те, что я знаю, поэтому пришлось качать модифицированный эксперементальный tensor flow
 

kokoko

Client
Регистрация
23.06.2016
Сообщения
249
Благодарностей
19
Баллы
18
Ну вот и я ворвался со своей сеткой )) Такие капчи имеют как минимум 2 косяка уязвимости позволяющие написать универсальный модуль для решения подобных капч, которым надо только указать капчу и сказать фас и модуль сам отсортирует изображения, обучится и все такое без вмешательства ну и конечно нужен пул проксей)
 

btr

Client
Регистрация
21.09.2015
Сообщения
71
Благодарностей
15
Баллы
8
+ тоже обучил нейронку, гадает отлично.
 

kokoko

Client
Регистрация
23.06.2016
Сообщения
249
Благодарностей
19
Баллы
18
+ тоже обучил нейронку, гадает отлично.
Какие задания тебе насыпает hcapcha ?у меня штук 9 и то как то неравномерно, авто дофига, а самолётов нифига до 100 штук всего, у меня
Машины,Автобусы,Поезда,Гидропланы,Велосипеды,мотоциклы,самолёты,корабли.
Может объединим базу? я могу собрать все в кучу и скриптом почистить от дубликатов
 

eksin

Client
Регистрация
09.12.2010
Сообщения
59
Благодарностей
26
Баллы
18
Какие задания тебе насыпает hcapcha ?у меня штук 9 и то как то неравномерно, авто дофига, а самолётов нифига до 100 штук всего, у меня
Машины,Автобусы,Поезда,Гидропланы,Велосипеды,мотоциклы,самолёты,корабли.
Может объединим базу? я могу собрать все в кучу и скриптом почистить от дубликатов
я думаю, что просто так датасетами никто делиться не будет.
к примеру у меня 50гигов ~ 165к файлов, а у тебя?
 

malysh

Client
Регистрация
27.07.2017
Сообщения
406
Благодарностей
52
Баллы
28
Какие задания тебе насыпает hcapcha ?у меня штук 9 и то как то неравномерно, авто дофига, а самолётов нифига до 100 штук всего, у меня
Машины,Автобусы,Поезда,Гидропланы,Велосипеды,мотоциклы,самолёты,корабли.
Может объединим базу? я могу собрать все в кучу и скриптом почистить от дубликатов
ещё есть комнаты и самолёты, летящие влево или вправо, это новые задания, так что работы дофига)
 

kokoko

Client
Регистрация
23.06.2016
Сообщения
249
Благодарностей
19
Баллы
18
я думаю, что просто так датасетами никто делиться не будет.
к примеру у меня 50гигов ~ 165к файлов, а у тебя?
ну у меня не так много,яб сказал крохи ) поделись инфой в личку как закачал столько ?) и за сколько времени ?У меня пулл прокси в 1 поток увы...такие хитрые мобильные прокси.Если с 1 ip много качать через url картинок то можешь отлететь в бан) Я по сути не тестил, но url у картинок же временный? тоесть если насобирать пачку url, то через час/день/неделю этот url не действительный? Как не попасть в бан при постоянной закачке картинок?)
 

eksin

Client
Регистрация
09.12.2010
Сообщения
59
Благодарностей
26
Баллы
18
зачем тебе картинки от капчи, если есть фотохостинги
 
  • Спасибо
Реакции: kokoko

btr

Client
Регистрация
21.09.2015
Сообщения
71
Благодарностей
15
Баллы
8
Какие задания тебе насыпает hcapcha ?у меня штук 9 и то как то неравномерно, авто дофига, а самолётов нифига до 100 штук всего, у меня
Машины,Автобусы,Поезда,Гидропланы,Велосипеды,мотоциклы,самолёты,корабли.
Может объединим базу? я могу собрать все в кучу и скриптом почистить от дубликатов
Я обучал на картинках не из капчи, немного добавлял с капчи, но там совсем крохи.
 

btr

Client
Регистрация
21.09.2015
Сообщения
71
Благодарностей
15
Баллы
8
ещё есть комнаты и самолёты, летящие влево или вправо, это новые задания, так что работы дофига)
привет, есть у тебя телега? пара вопросов по python возникло, хотел спросить.
 

btr

Client
Регистрация
21.09.2015
Сообщения
71
Благодарностей
15
Баллы
8
Там ситуация следующая, если я картинку капчи сохраняю в файл:
C#:
string items = elm.DrawToBitmap(false);
string path = patch + @"\" + check + ".png";
System.IO.File.WriteAllBytes(path, Convert.FromBase64String(items));
и потом в модель загружаю на прямую с диска через:
Python:
img = cv2.imread(img)
то все ок, если же пытаюсь отправить POST запросом(Flask) в base64 и читаю так:
Python:
img = base64.b64decode(img)
img = np.frombuffer(img,np.uint8)
то модель не принимает изображение. Уже всю голову себе сломал, как отправлять в base64.
 

kokoko

Client
Регистрация
23.06.2016
Сообщения
249
Благодарностей
19
Баллы
18
Там ситуация следующая, если я картинку капчи сохраняю в файл:
C#:
string items = elm.DrawToBitmap(false);
string path = patch + @"\" + check + ".png";
System.IO.File.WriteAllBytes(path, Convert.FromBase64String(items));
и потом в модель загружаю на прямую с диска через:
Python:
img = cv2.imread(img)
то все ок, если же пытаюсь отправить POST запросом(Flask) в base64 и читаю так:
Python:
img = base64.b64decode(img)
img = np.frombuffer(img,np.uint8)
то модель не принимает изображение. Уже всю голову себе сломал, как отправлять в base64.
ты в keras отправляешь самописную или в чужой модуль ? в каком формате ии принимает изображения? в виде тензора или картинки png,jpg, у keras есть метод конвертации изображения в 3 мерный тензор с изменением rgb диапазона с 0-255 в 0-1, возможно в этом проблема, надо видеть ошибку, к тому же возможно ты конвертируешь просто в 3 мерный тензор, но там ещё надо добавлять цветовую схему, на самый крайняк можно записывать изображение в файл и уже файл передавать ии
 

btr

Client
Регистрация
21.09.2015
Сообщения
71
Благодарностей
15
Баллы
8
модель брал готовую
при обучении скармливал картинки png,jpg
 
Последнее редактирование:

kokoko

Client
Регистрация
23.06.2016
Сообщения
249
Благодарностей
19
Баллы
18
Раз мы тут говорим об ИИ и hcapche, расскажите мне как нубу Зачем надо знать sitekey?Нужен ли он при гадании Нейросетью ? а то что то начинаю думать что я гадаю капчу не коротким путем
 

btr

Client
Регистрация
21.09.2015
Сообщения
71
Благодарностей
15
Баллы
8
sitekey нужен для разгадывания на сервисах, когда гадаешь в браузере, кликами, то он не нужен совсем.
 

eksin

Client
Регистрация
09.12.2010
Сообщения
59
Благодарностей
26
Баллы
18
ну чо , гадальщики на ИИ, давайте думать , как теперь решать новую Нкапчу? :(
 

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