Сорри за глупый вопрос, а куда эту регулярку вставить ?//div[@class='captcha']/div[not (@class)]/*
//-------- входные параметры поиска капчи ---------------------------------------------------//
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;
так попробуй, может прокатитПлизз подскажите как правильно дописать что бы capmonster.cloud учитывал регистр?
C#:string recognition = ZennoPoster.CaptchaRecognition("CapMonsterCloud.dll",b64strcaptcha, "");
string recognition = ZennoPoster.CaptchaRecognition("CapMonsterCloud.dll",b64strcaptcha, "casesensitive=1");
Не работает, ну т.е. он примерно 1 из 5 раз отгадывает но без учета регистратак попробуй, может прокатит
C#:string recognition = ZennoPoster.CaptchaRecognition("CapMonsterCloud.dll",b64strcaptcha, "casesensitive=1");
Работает, но теперь кажется процент успеха стал меньше. Буду тестировать!string recognition = ZennoPoster.CaptchaRecognition("CapMonsterCloud.dll",b64strcaptcha, "Case=true");
тоже также - добавить в запрос доп. параметр Case=trueА если вот такого плана капча и распознавание через капмонстр не учитывает регистр, как настроить? https://i.imgur.com/N435ZWQ.png
Точно ттакая же капча попалась на одном из сайтов.Пробовал этот код,выдаёт ошибку:Попробовал отправить это добро на распознавание.... и не получилось.
Значит какие проблемы выявлены.
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;
xpath неправильный.Точно такая же капча попалась на одном из сайтов
Точно ттакая же капча попалась на одном из сайтов.Пробовал этот код,выдаёт ошибку:
Выполнение действия CSharp OwnCode. [Строка: 8; Cтолбец: 15] Выдано исключение типа "System.Exception".
В чём может быть проблема?
нашел решение?В общем с Case=true очень плохо стал разгадывать капчу, 1 раз из 50 в лучшем случае. В плоть до того что он количество символов определить не может. Подскажите кому писать по этому поводу ?
а может такое быть, что в PM xpath правильный, а в ZP тот же xpath неправильный?xpath неправильный.
если полную эмуляцию мыши отключить, то нормально работать начинает в зеннопостере. может кто сталкивался? подскажите с какую сторону копать, чтобы и эмуляцию мыши не отключать и шаб чтобы нормально, как в прджектмэйкере работал, с полной эмуляцией мышиа может такое быть, что в PM xpath правильный, а в ZP тот же xpath неправильный?
у меня такая же примерно херь вылезла
Выполнение действия CSharp OwnCode: ЖДЕМ КН. 'Photo outline icon'. Выдано исключение типа "System.Exception".
в PM все работает, а если в зеннопостере запустить, то "System.Exception". как его тестить тогда, xpath этот хз ¯\_(ツ)_/¯