Добрый день
Решаем капчу с помощью с#, нажатием чекбокса на Cloudflare Turnstile
Альтернативный способ найти элемент на странице за счет поиска элемента по картинки преобразованной в base64. У зеннопостера при преобразовании
Посмотреть вложение 128849 дается только демо код, который мы должны понять как работает, спасибо за это. Тут приведен пример работы поиска элемента чекбокса на капче Cloudflare Turnstile на странице за счет готового base64 кода.
Посмотреть вложение 128863
Почему так,
Посмотреть вложение 128850 потому что у зеннопостера закрыт доступ к получению элементов shadow-root (closed) , ждем в зеннопостере 8, а пока работаем как можем
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 код