Капча улетает при скрине

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

SlipDez

Client
Регистрация
18.07.2018
Сообщения
453
Реакции
90
Баллы
28
Пытаюсь сделать скриншот canvas Hcaptcha, но она мастерски уворачивается, как ее поймать? Частенько это происходит на Enterprise на других более редкое явление. Скриншот пытаюсь сделать через ZennoPoster.ImageProcessingCropFromScreenshot
110906


110904
110905
 
Пытаюсь сделать скриншот canvas Hcaptcha, но она мастерски уворачивается, как ее поймать? Частенько это происходит на Enterprise на других более редкое явление. Скриншот пытаюсь сделать через ZennoPoster.ImageProcessingCropFromScreenshot
Посмотреть вложение 110906

Посмотреть вложение 110904Посмотреть вложение 110905
Это такая специфика зенно, особенно на хромиум... Вот поставил сегодня тестовую 7.7.6.0, вроде бы помогло. Попробуйте и вы.
 
ex3maL

Неоднократно пробовал сбивается еще чаще + часто отрисовывает только пустой фон (черный)
 
Gunjubasik

К сожалению не могу, подписка на обновления закончилась, жду 8
110911
 
У меня уже 2 закончились пока жду:-)
Говорят что скоро должна быть, но судя по тому что этим занимается другая команда возможно надо будет дополнительно шекели отстегивать)
 
Решено
Спустя столько потраченного времени наконец-то понял в чем дело! на cef отрабатывает отлично, а вот на chronium иногда не хочет. Все дело в масштабе, привычка его менять. Как только масштаб становится отличный от 100% все летит через 5 точку canvas до улетает дальше то не долетает.

Решение:

Для получения изображения
Для получения изображения в файловой системе:
Развернуть Свернуть Копировать
HtmlElement he = instance.ActiveTab.FindElementByXPath("//canvas",0);
if (he.IsVoid) throw new Exception("canvas не найден.");
var bitmap  = he.DrawAsBitmap(false);

try
{
    bitmap.Save(@"C:\test.png", System.Drawing.Imaging.ImageFormat.Png);
}
catch (Exception e)
{
    throw new Exception("Ошибка при сохранении Bitmap в файл", e);
}
finally
{
    bitmap.Dispose();
}

Для получения base64
Для получения изображения в base64:
Развернуть Свернуть Копировать
HtmlElement he = instance.ActiveTab.FindElementByXPath("//canvas",0);
if (he.IsVoid) throw new Exception("canvas не найден.");
string k   = he.DrawToBitmap(false);
project.Variables["resultBase64"].Value  =k;

Для установки дефолт значения после игр
C#:
Развернуть Свернуть Копировать
Tab tab = instance.ActiveTab;
tab.PageScale = 100; // Значение в процентах, 50 = 50%

Ну и canvas можно при желании отрисовать по новой тогда изображение уменьшится в размере если сервис не захочет принимать из за размера

Dr.Pipetka
ex3maL
Gunjubasik
 
Решено
Спустя столько потраченного времени наконец-то понял в чем дело! на cef отрабатывает отлично, а вот на chronium иногда не хочет. Все дело в масштабе, привычка его менять. Как только масштаб становится отличный от 100% все летит через 5 точку canvas до улетает дальше то не долетает.

Решение:

Для получения изображения
Для получения изображения в файловой системе:
Развернуть Свернуть Копировать
HtmlElement he = instance.ActiveTab.FindElementByXPath("//canvas",0);
if (he.IsVoid) throw new Exception("canvas не найден.");
var bitmap  = he.DrawAsBitmap(false);

try
{
    bitmap.Save(@"C:\test.png", System.Drawing.Imaging.ImageFormat.Png);
}
catch (Exception e)
{
    throw new Exception("Ошибка при сохранении Bitmap в файл", e);
}
finally
{
    bitmap.Dispose();
}

Для получения base64
Для получения изображения в base64:
Развернуть Свернуть Копировать
HtmlElement he = instance.ActiveTab.FindElementByXPath("//canvas",0);
if (he.IsVoid) throw new Exception("canvas не найден.");
string k   = he.DrawToBitmap(false);
project.Variables["resultBase64"].Value  =k;

Для установки дефолт значения после игр
C#:
Развернуть Свернуть Копировать
Tab tab = instance.ActiveTab;
tab.PageScale = 100; // Значение в процентах, 50 = 50%

Ну и canvas можно при желании отрисовать по новой тогда изображение уменьшится в размере если сервис не захочет принимать из за размера

Dr.Pipetka
ex3maL
Gunjubasik
А еще игра со стилями дает результ как у меня на гифке
Position absolute
Меняем на fixed
А потом скриним участок
В элементе канвас если что)
 
А еще игра со стилями дает результ как у меня на гифке
Position absolute
Меняем на fixed
А потом скриним участок
В элементе канвас если что)
Честно говоря для меня это уже рулетка какая-то проверил на zennolab captcha = работает, проверил на nopecha работает. Начал проверять Discord и все полетело, уже не отрабатывает. С чем это связано не понятно. Сначала понял что там ни 1 canvas пробовал получать только те которые во frame в конечном итоге решил сделать проверку на размер картинки, если она слишком маленькая то пытаюсь скринить 3 раза с задержкой 500 мс (потому что изображение отрисовывается на холсте ассинхронно) если все также выхожу по красной ветке и другой вариант использую. При масштабе 100% тот способ который использовал ранее отрабатывает практически всегда.

PS Для Hcaptcha режу верхнюю часть а то утки прокликиваются по тестовым изображениям, мб понадобится вот код для обрезки


C#:
Развернуть Свернуть Копировать
string outputImagePath = "C://90.jpg"; // Изменили имя переменной и путь для сохранения без этого выбивает ошибку
string path = project.Directory + @"\56.jpg";

int cropHeight = 120;

using (Bitmap originalImage = new Bitmap(path))
{
    int newHeight = originalImage.Height - cropHeight;
    Rectangle cropRectangle = new Rectangle(0, cropHeight, originalImage.Width, newHeight);

    using (Bitmap croppedImage = new Bitmap(cropRectangle.Width, cropRectangle.Height))
    {
        using (Graphics graphics = Graphics.FromImage(croppedImage))
        {
            graphics.DrawImage(originalImage, new Rectangle(0, 0, croppedImage.Width, croppedImage.Height), cropRectangle, GraphicsUnit.Pixel);
            croppedImage.Save(outputImagePath, System.Drawing.Imaging.ImageFormat.Jpeg);
        }
    }
}
            byte[] fileBytes = File.ReadAllBytes(outputImagePath);

        string base64 = Convert.ToBase64String(fileBytes);
                    project.Variables["img0"].Value= base64;
                return "ok";
 

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