Смотрите видео ниже, чтобы узнать, как установить наш сайт в качестве веб-приложения на домашнем экране.
Примечание: Эта возможность может быть недоступна в некоторых браузерах.
Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нём некорректно. Вам необходимо обновить браузер или попробовать использовать другой.
Спасибо автору за интересный подход.
Я тоже столкнулся недавно с этой капчей и написал простой xpath который ведет к контейнеру в котором хранится данная капча и далее кликает по координатам (координаты всегда одинаковые так как размер контейнера в котором хранится капча не изменяется), но этот xpath необходимо изменять в зависимости от сайта на котором используется, а подход автора более универсальный.
Последний раз я делал клик по чекбоксу этой капчи таким образом:
Решаем капчу с помощью с#, нажатием чекбокса на Cloudflare Turnstile
Альтернативный способ найти элемент на странице за счет поиска элемента по картинки преобразованной в base64. У зеннопостера при преобразовании Посмотреть вложение 128849 дается только демо код, который мы должны понять как работает, спасибо за это. Тут приведен пример работы поиска элемента чекбокса на капче Cloudflare Turnstile на странице за счет готового base64 кода.
Почему так, Посмотреть вложение 128850 потому что у зеннопостера закрыт доступ к получению элементов shadow-root (closed) , ждем в зеннопостере 8, а пока работаем как можем
C#:
void setE(string word){ throw new Exception(word); }
int tyBrtype=0;
string tp = instance.BrowserType.ToString().ToLower();
if (tp.Equals("chromium")){ tyBrtype=1; }
if(tyBrtype!=1){ setE("Только для Сhromium"); }
Tab tab = instance.ActiveTab;
var imgHash = "iVBORw0KGgoAAAANSUhEUgAAADAAAAA9CAYAAADrnOpZAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAETSURBVGhD7doxDoIwGIbhXye4AjsbI5wDRjgEE1fgBhyAlRHOwcrGxCkY1TbVBDUO+psvTb5nKWUgfWk0qfF0uRGP2YBt29zUP4+AKIrcLb+c3egtBqAxAI0BaAxAYwAaA9AYgMYANAagqZ2J932XaZpkWRZ7rSXLMsnzXMIwdHeO1HZgGAaZ51l18YZ55jiObvZKbQeaprFjXdcSx7G9/tW6rtJ1nX37bdu6u0fqnwGtxRv3Z33aVX4LoTEAjQFoDEBjABoD0BiAxgA0Bjwzx0At92cFQWDHd9TOxH3f218k/iFNU6mqys2O1HagLEtJkuTj2/qGWXxRFG72iv+VQGMAGgPQGIDGADQGoDEAzfMAkStWLWCMR24thgAAAABJRU5ErkJggg==";
Document mainDocument = tab.MainDocument;
if (mainDocument.IsVoid){ return -1; }
//ResourceManager rm = new System.Resources.ResourceManager("", System.Reflection.Assembly.GetExecutingAssembly());
string rectangleString = tab.FindImage(imgHash, new[] { new Rectangle(0, 0, mainDocument.Width, mainDocument.Height) }, 90);
if (!String.IsNullOrWhiteSpace(rectangleString)){
string[]split = rectangleString.Split(',');
Rectangle rectangle = new System.Drawing.Rectangle(System.Convert.ToInt32(split[0].Trim()), System.Convert.ToInt32(split[1].Trim()), System.Convert.ToInt32(split[2].Trim()), System.Convert.ToInt32(split[3].Trim()));
if (!rectangle.IsEmpty){
rectangle = new System.Drawing.Rectangle(rectangle.X + 30, rectangle.Y + 34, 6, 6);
tab.RiseEvent("click", rectangle, "Left");
}
}
Спасибо за внимание
Дополнительно: как получить base64 - делаем снимок экрана, далее заходим в paint , там выделяем объект что нужно искать , сохраняем, заходим на https://www.base64-image.de/ , загружаем картинку получаем base64 код
решение необычное. Но необычайно долгое. Для этого можно использовать OpenCv которое отработает гораздо быстрее. Но есть один маленький нюанс, который стреляет в первую очередь по нервной системе, это замечательный старый netframework 4.6 который не поддерживается... костыль это делать отдельный exe файл или на другом языке делать костыль.
решение необычное. Но необычайно долгое. Для этого можно использовать OpenCv которое отработает гораздо быстрее. Но есть один маленький нюанс, который стреляет в первую очередь по нервной системе, это замечательный старый netframework 4.6 который не поддерживается... костыль это делать отдельный exe файл или на другом языке делать костыль.
OpenCv прекрасно работает внутри зеннопостера. С совместимостью есть небольшая сложность, но решаема без использования сторонней программы... Хотя , многим будет удобнее конечно.. Если для себя...
Ну а то что зенковский способ поиска по картинке тормоз... Так об этом писали несколько лет назад.
Однако, если модифицировать представленный код, так что бы он искал не по всему скрину страницы, а в пределах родительского фрейма капчи, и потом немного прдрасчитать координаты, то думаю будет быстрее шуршать и меньше жрать процессор.
OpenCv прекрасно работает внутри зеннопостера. С совместимостью есть небольшая сложность, но решаема без использования сторонней программы... Хотя , многим будет удобнее конечно.. Если для себя...
Ну а то что зенковский способ поиска по картинке тормоз... Так об этом писали несколько лет назад.
Однако, если модифицировать представленный код, так что бы он искал не по всему скрину страницы, а в пределах родительского фрейма капчи, и потом немного прдрасчитать координаты, то думаю будет быстрее шуршать и меньше жрать процессор.
Создаешь проект vs из зенки
В нем подрубаешь опенсв
Компилируешь проект
Идешь в папку, копируешь DLL опенсв и его нативки, которые находятся в подпапке DLL
Идешь в экстернал зенки, вставляешь скопированное, с сохранением структуры.
В шаблоне подключаешь только одну DLL опенсв, нативки не трогаешь.
Если все сделал, попробуй тестовый код. Возможно этого хватит. Ну а если будет ругаться на систем. Драйвинг, тогда напишешь, продолжим разбор.
Создаешь проект vs из зенки
В нем подрубаешь опенсв
Компилируешь проект
Идешь в папку, копируешь DLL опенсв и его нативки, которые находятся в подпапке DLL
Идешь в экстернал зенки, вставляешь скопированное, с сохранением структуры.
В шаблоне подключаешь только одну DLL опенсв, нативки не трогаешь.
Если все сделал, попробуй тестовый код. Возможно этого хватит. Ну а если будет ругаться на систем. Драйвинг, тогда напишешь, продолжим разбор.