Помогите взять коректно капчу со стрАницы

Kostass

Client
Регистрация
20.12.2010
Сообщения
144
Благодарностей
9
Баллы
18
В общем не могу корректно взять капчу без значка обновления.
Сайт blockchair.com что бы получить ссылку с капчей его нада изрядно завалить запросами, по этому ниже сохранил страницу в HTML с капчей.

2020-05-14_082047.png


2020-05-14_082128.png
 

Вложения

  • 86,2 КБ Просмотры: 153

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 789
Благодарностей
5 721
Баллы
113

Kostass

Client
Регистрация
20.12.2010
Сообщения
144
Благодарностей
9
Баллы
18

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 789
Благодарностей
5 721
Баллы
113
Попробовал отправить это добро на распознавание.... и не получилось.
Значит какие проблемы выявлены.
1. это не картинка. это svg. рисуется прямо в браузере. как оказалось есть и минусы и плюсы.
из минусов то что кубик распознавания капчи не может преобразовать это хозяйство в нужный ему формат.
из плюсов то что можно удалить дополнительные линии на капче
55780


2. при создании скриншота необъяснимым образом меняется структура документа и капча смещается, в результате скриниться вообще хрен знает что.
опытным путем выявлено что это футер подлянку делает

вот сделал тебе снипет. пробуй. модуль для разгадывания только свой укажи. я для теста поставил MonkeyEnter
C#:
//-------- входные параметры поиска капчи ---------------------------------------------------//
string xpath_1 = "//div[@class='captcha']/div[not (@class)]/*";
string xpath_dop_1 = "//*[@id='footer']";                                         
string xpath_dop_2 = "//div[@class='captcha']/div[not (@class)]/*/*";         
string modul_cap = "MonkeyEnter.dll"; // CapMonster2.dll
//------------------------------------------------------------------------------------------------//
HtmlElement he = instance.ActiveTab.FindElementByXPath(xpath_1, 0);
if (he.IsVoid) throw new Exception();
//// удаление мешающих элементов  ///////////////////////////////////////////////////////////////////
try{ HtmlElement elLink = instance.ActiveTab.FindElementByXPath(xpath_dop_1, 0);   
     HtmlElement heParent = elLink.ParentElement; heParent.RemoveChild(elLink); } catch{}
/////////////////////////////////////////////////////////////////////////////////////////////////////
//// удаление не нужных линий  ///////////////////////////////////////////////////////////////////
var elLinks = instance.ActiveTab.FindElementsByXPath(xpath_dop_2);   
foreach (HtmlElement elLink in elLinks)
{
    if (elLink.OuterHtml.Length < 200 ) {
        try{ HtmlElement heParent = elLink.ParentElement; heParent.RemoveChild(elLink); } catch{}
    }
}
/////////////////////////////////////////////////////////////////////////////////////////////////////
//// захват изображения ///////////////////////////////////////////////////////////////////
int left = Convert.ToInt32(he.GetAttribute("leftInBrowser")); //Получаем координату элемента по left
int top = Convert.ToInt32(he.GetAttribute("topInBrowser")); //Получаем координату элемента по top
long unixTime = (long)(DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalMilliseconds; //Получаем UnixTime в миллисекундах
string captchapath = project.Directory + @"\Temp\" + unixTime + ".jpg"; // путь к картинке
ZennoPoster.ImageProcessingCropFromScreenshot(instance.Port, captchapath, left, top, he.Width, he.Height, "pixel");  //Делаем скриншот по координатам элемента и сохраняем
System.Threading.Thread.Sleep(1000); //Небольшая пауза, чтобы система успела сохранить файл
string b64strcaptcha = Convert.ToBase64String(System.IO.File.ReadAllBytes(captchapath));
System.IO.File.Delete(captchapath);
// Отправить на распознавание
string recognition = ZennoPoster.CaptchaRecognition(modul_cap,b64strcaptcha, "");
// обработка ответа
var regexGroups = Macros.TextProcessing.Regex(recognition, @".*(?=-\|-)", "0");
if (regexGroups.Count != 0) recognition = regexGroups[0].FirstOrDefault();
// возвращаем результат   
return recognition;
 
  • Спасибо
Реакции: Kostass

Kostass

Client
Регистрация
20.12.2010
Сообщения
144
Благодарностей
9
Баллы
18
Все отлично работает спасибо большое.
Подскажите еще как capmonster.cloud сказать что бы учитывал регистр ?
 

Kostass

Client
Регистрация
20.12.2010
Сообщения
144
Благодарностей
9
Баллы
18
Плизз подскажите как правильно дописать что бы capmonster.cloud учитывал регистр?
C#:
string recognition = ZennoPoster.CaptchaRecognition("CapMonsterCloud.dll",b64strcaptcha, "");
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 789
Благодарностей
5 721
Баллы
113
Плизз подскажите как правильно дописать что бы capmonster.cloud учитывал регистр?
C#:
string recognition = ZennoPoster.CaptchaRecognition("CapMonsterCloud.dll",b64strcaptcha, "");
так попробуй, может прокатит
C#:
string recognition = ZennoPoster.CaptchaRecognition("CapMonsterCloud.dll",b64strcaptcha, "casesensitive=1");
 

Kostass

Client
Регистрация
20.12.2010
Сообщения
144
Благодарностей
9
Баллы
18
так попробуй, может прокатит
C#:
string recognition = ZennoPoster.CaptchaRecognition("CapMonsterCloud.dll",b64strcaptcha, "casesensitive=1");
Не работает, ну т.е. он примерно 1 из 5 раз отгадывает но без учета регистра :(

2020-05-19_205758.png
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 789
Благодарностей
5 721
Баллы
113
ну по методу casesensitive=1 это надо разработчикам вопросы задавать, в ветке капмостра. вообще по этой опции инфы вообще ноль. ее ввели , а нигде не прописали как пользоваться. на форуме поиск выдал только одно косвенное применение. и то тут вот оно чот и не работает.
 
  • Спасибо
Реакции: Kostass

VladZen

Administrator
Команда форума
Регистрация
05.11.2014
Сообщения
22 480
Благодарностей
5 917
Баллы
113
Попробуйте так:
string recognition = ZennoPoster.CaptchaRecognition("CapMonsterCloud.dll",b64strcaptcha, "Case=true");
 
  • Спасибо
Реакции: Kostass

Kostass

Client
Регистрация
20.12.2010
Сообщения
144
Благодарностей
9
Баллы
18

Kostass

Client
Регистрация
20.12.2010
Сообщения
144
Благодарностей
9
Баллы
18
В общем с Case=true очень плохо стал разгадывать капчу, 1 раз из 50 в лучшем случае. В плоть до того что он количество символов определить не может. Подскажите кому писать по этому поводу ?
 

honey975

Новичок
Регистрация
08.08.2019
Сообщения
9
Благодарностей
0
Баллы
1
А если вот такого плана капча и распознавание через капмонстр не учитывает регистр, как настроить? https://i.imgur.com/N435ZWQ.png
 

VladZen

Administrator
Команда форума
Регистрация
05.11.2014
Сообщения
22 480
Благодарностей
5 917
Баллы
113

Szerzs

Client
Регистрация
15.06.2019
Сообщения
260
Благодарностей
68
Баллы
28
Точно такая же капча попалась на одном из сайтов
Попробовал отправить это добро на распознавание.... и не получилось.
Значит какие проблемы выявлены.
1. это не картинка. это svg. рисуется прямо в браузере. как оказалось есть и минусы и плюсы.
из минусов то что кубик распознавания капчи не может преобразовать это хозяйство в нужный ему формат.
из плюсов то что можно удалить дополнительные линии на капче
Посмотреть вложение 55780

2. при создании скриншота необъяснимым образом меняется структура документа и капча смещается, в результате скриниться вообще хрен знает что.
опытным путем выявлено что это футер подлянку делает

вот сделал тебе снипет. пробуй. модуль для разгадывания только свой укажи. я для теста поставил MonkeyEnter
C#:
//-------- входные параметры поиска капчи ---------------------------------------------------//
string xpath_1 = "//div[@class='captcha']/div[not (@class)]/*";
string xpath_dop_1 = "//*[@id='footer']";                                        
string xpath_dop_2 = "//div[@class='captcha']/div[not (@class)]/*/*";        
string modul_cap = "MonkeyEnter.dll"; // CapMonster2.dll
//------------------------------------------------------------------------------------------------//
HtmlElement he = instance.ActiveTab.FindElementByXPath(xpath_1, 0);
if (he.IsVoid) throw new Exception();
//// удаление мешающих элементов  ///////////////////////////////////////////////////////////////////
try{ HtmlElement elLink = instance.ActiveTab.FindElementByXPath(xpath_dop_1, 0);  
     HtmlElement heParent = elLink.ParentElement; heParent.RemoveChild(elLink); } catch{}
/////////////////////////////////////////////////////////////////////////////////////////////////////
//// удаление не нужных линий  ///////////////////////////////////////////////////////////////////
var elLinks = instance.ActiveTab.FindElementsByXPath(xpath_dop_2);  
foreach (HtmlElement elLink in elLinks)
{
    if (elLink.OuterHtml.Length < 200 ) {
        try{ HtmlElement heParent = elLink.ParentElement; heParent.RemoveChild(elLink); } catch{}
    }
}
/////////////////////////////////////////////////////////////////////////////////////////////////////
//// захват изображения ///////////////////////////////////////////////////////////////////
int left = Convert.ToInt32(he.GetAttribute("leftInBrowser")); //Получаем координату элемента по left
int top = Convert.ToInt32(he.GetAttribute("topInBrowser")); //Получаем координату элемента по top
long unixTime = (long)(DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalMilliseconds; //Получаем UnixTime в миллисекундах
string captchapath = project.Directory + @"\Temp\" + unixTime + ".jpg"; // путь к картинке
ZennoPoster.ImageProcessingCropFromScreenshot(instance.Port, captchapath, left, top, he.Width, he.Height, "pixel");  //Делаем скриншот по координатам элемента и сохраняем
System.Threading.Thread.Sleep(1000); //Небольшая пауза, чтобы система успела сохранить файл
string b64strcaptcha = Convert.ToBase64String(System.IO.File.ReadAllBytes(captchapath));
System.IO.File.Delete(captchapath);
// Отправить на распознавание
string recognition = ZennoPoster.CaptchaRecognition(modul_cap,b64strcaptcha, "");
// обработка ответа
var regexGroups = Macros.TextProcessing.Regex(recognition, @".*(?=-\|-)", "0");
if (regexGroups.Count != 0) recognition = regexGroups[0].FirstOrDefault();
// возвращаем результат  
return recognition;
Точно ттакая же капча попалась на одном из сайтов.Пробовал этот код,выдаёт ошибку:
Выполнение действия CSharp OwnCode. [Строка: 8; Cтолбец: 15] Выдано исключение типа "System.Exception".
В чём может быть проблема?
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 789
Благодарностей
5 721
Баллы
113
Точно такая же капча попалась на одном из сайтов


Точно ттакая же капча попалась на одном из сайтов.Пробовал этот код,выдаёт ошибку:
Выполнение действия CSharp OwnCode. [Строка: 8; Cтолбец: 15] Выдано исключение типа "System.Exception".
В чём может быть проблема?
xpath неправильный.
 
  • Спасибо
Реакции: Szerzs

Juniorcpa

Client
Регистрация
27.05.2014
Сообщения
2 031
Благодарностей
1 286
Баллы
113
В общем с Case=true очень плохо стал разгадывать капчу, 1 раз из 50 в лучшем случае. В плоть до того что он количество символов определить не может. Подскажите кому писать по этому поводу ?
нашел решение?
 

Dimon

Client
Регистрация
17.03.2010
Сообщения
64
Благодарностей
10
Баллы
8
xpath неправильный.
а может такое быть, что в PM xpath правильный, а в ZP тот же xpath неправильный?
у меня такая же примерно херь вылезла
Выполнение действия CSharp OwnCode: ЖДЕМ КН. 'Photo outline icon'. Выдано исключение типа "System.Exception".
в PM все работает, а если в зеннопостере запустить, то "System.Exception". как его тестить тогда, xpath этот хз ¯\_(ツ)_/¯
 

Dimon

Client
Регистрация
17.03.2010
Сообщения
64
Благодарностей
10
Баллы
8
а может такое быть, что в PM xpath правильный, а в ZP тот же xpath неправильный?
у меня такая же примерно херь вылезла
Выполнение действия CSharp OwnCode: ЖДЕМ КН. 'Photo outline icon'. Выдано исключение типа "System.Exception".
в PM все работает, а если в зеннопостере запустить, то "System.Exception". как его тестить тогда, xpath этот хз ¯\_(ツ)_/¯
если полную эмуляцию мыши отключить, то нормально работать начинает в зеннопостере. может кто сталкивался? подскажите с какую сторону копать, чтобы и эмуляцию мыши не отключать и шаб чтобы нормально, как в прджектмэйкере работал, с полной эмуляцией мыши
 

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