Как можно работать с капчей не по значениям HtmlElement, а по координатам

  • Автор темы Автор темы SlavenTyz
  • Дата начала Дата начала

SlavenTyz

Client
Регистрация
30.04.2018
Сообщения
1 173
Реакции
37
Баллы
48
Всем привет, имеются сайты где имеется тэг с классом convas, это значит что картинку отрисовывают JavaScript, а это значит, что доступ к элементам страницы закрыт. Один из вариантов что бы прочитать хоть что ни будь использовать, определённый сектор где вырисовываются какие то значения. Вот и подумал этот сектор отправлять на сервис по разгадыванию капчи, что бы программа видела эти значения, но как это сделать?
 
Может просто скринить её как-то и отсылать на сервис?
 
В том то и сложность, что скринить все не нужно, а нужен кусочек, потому что там много различных значений
Можно скринить область, здесь уже вам нужно определить какую именно
 
Интересует
1) Как отскринить выбраную область
2) Как этот скрин отправить на сервис,
 
45009

кубик скриншота. вычисляете координаты и скрините кусок в файл. файл на капмостра. профит :)
 
  • Спасибо
Реакции: VladZen
Интересует
1) Как отскринить выбраную область
2) Как этот скрин отправить на сервис,
Кубик обработки изображений (выше уже написали) позволяет сделать скриншот области инстанса - https://zennolab.com/wiki/ru:actions:image_processing
Кубик Это капча, там можно выбрать локальный файл для распознавания через сервис.
 
тэг с классом convas, это значит что картинку отрисовывают JavaScript, а это значит, что доступ к элементам страницы закрыт.
Для канваса есть метод в JS:
полученный base64 уже можно отправлять на сервис (своими методами).
 

Вложения

  • 1575094987214.png
    1575094987214.png
    242,1 KB · Просмотры: 1
вот на форуме нашел рабочий код, у себя проверил. работает.
в переменную capcha_snippet до вызова кубика c# записать надо путь к файлу
и надо определить переменную на выходе, куда ответ запишеться

C#:
Развернуть Свернуть Копировать
//Отправка капчи из картинки
var capcha = project.Variables["capcha_snippet"].Value;
var image = System.Drawing.Image.FromFile(@capcha);
string base64String = String.Empty;
using (System.IO.MemoryStream ms = new System.IO.MemoryStream())
{
image.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
byte[] imageBytes = ms.ToArray();
base64String = Convert.ToBase64String(imageBytes);
}
var result = ZennoPoster.CaptchaRecognition("CapMonster2.dll", base64String, "is_russian=1");
// отрезаем лишнее
var tmp = result.Split(new [] {"-|-"}, StringSplitOptions.None);
if (tmp.Length > 1) return tmp[0];
return result;
 
Для канваса есть метод в JS:
полученный base64 уже можно отправлять на сервис (своими методами).
Жаль это не работает с frame которые на другом домене
 
Yuriy Zymlex

Подскажите, а если фрейм находится на другом домене т.е frame src=... скажем капча с помощью js доступа не будет из за политики безопасности а zp имеет доступ к этому элементу?
 

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