Бесплатный Geetest на 100%

m0pfin

Client
Регистрация
12.08.2018
Сообщения
9
Благодарностей
2
Баллы
3
Подскажите пожалуйста, в чем проблема может бытЬ?)

Выполнение действия CSharp OwnCode: GeeTest. Overlay image size must be equal to source image size.
 

girpilius

Client
Регистрация
09.09.2020
Сообщения
6
Благодарностей
1
Баллы
1
Размер оверлейного изображения должен быть равен размеру исходного изображения.
 
  • Спасибо
Реакции: m0pfin

sten30

Client
Регистрация
05.09.2017
Сообщения
224
Благодарностей
25
Баллы
28
К сожалению, Geetest нам присылает только картинку с тёмным пазлом, причем запутанную, поэтому дабы не усложнять себе жизнь, просто делаем скриншот из инстанса.
Делаем скриншот картинки с тёмным пазлом:
HtmlElement he = instance.ActiveTab.GetDocumentByAddress("0").FindElementByAttribute("canvas", "class", "geetest_canvas_slice geetest_absolute", "regexp", 0); //Получаем элемент цветного пазла
he.SetAttribute("style", "opacity: 0; display: block;"); //Убираем цветной пазл с помощью редактирования атрибута style, чтобы он не мешал нам

int left = Convert.ToInt32(he.GetAttribute("left")); //Получаем координату элемента по left
int top = Convert.ToInt32(he.GetAttribute("top")); //Получаем координату элемента по top

long unixTime = (long)(DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalMilliseconds; //Получаем UnixTime в миллисекундах

ZennoPoster.ImageProcessingCropFromScreenshot(instance.Port, project.Directory + "\\" + unixTime + ".jpg", left, top, he.Width, he.Height, "pixel");  //Делаем скриншот по координатам элемента и сохраняем в папку с шаблоном
System.Threading.Thread.Sleep(1000); //Небольшая пауза, чтобы система успела сохранить файл
System.Drawing.Bitmap image = (Bitmap)Bitmap.FromFile(project.Directory + "\\" + unixTime + ".jpg"); //Загружаем скриншот обратно в код

Теперь нам нужен "фон". Его мы можем получить, сложив пару одинаковых картинок с разным расположением тёмного пазла в любом графическом редакторе.
Посмотреть вложение 45603 + Посмотреть вложение 45605 = Посмотреть вложение 45606

Картинки можно получить с помощью предыдущего кода.


Теперь закидываем все фоновые картинки (на eBay их 4) в код, чтобы они не пылились у нас на жестком диске. Предварительно конвертируем их в Base64 с помощью любого онлайн сервиса.

Посмотреть вложение 45607
P.S. Я сделал это так, но вы также можете хранить их в папке с шаблоном и загружать с помощью: System.Drawing.Bitmap image = (Bitmap)Bitmap.FromFile


Отлично! :ay: У нас загружена картинка и загружены фоны, но нужно определить какой из фонов выдал Geetest в конкретный момент времени.
Для этого необходимо получить цвет "нулевого" пикселя каждого фона и с помощью логики определить какой сейчас фон подкинула каптча.
Получаем цвет:
HtmlElement he = instance.ActiveTab.GetDocumentByAddress("0").FindElementByAttribute("canvas", "class", "geetest_canvas_slice geetest_absolute", "regexp", 0);
he.SetAttribute("style", "opacity: 0; display: block;");
int left = Convert.ToInt32(he.GetAttribute("left"));
int top = Convert.ToInt32(he.GetAttribute("top"));
long unixTime = (long)(DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalMilliseconds;
ZennoPoster.ImageProcessingCropFromScreenshot(instance.Port, project.Directory + "\\" + unixTime + ".jpg", left, top, he.Width, he.Height, "pixel");
System.Threading.Thread.Sleep(1000);
System.Drawing.Bitmap image = (Bitmap)Bitmap.FromFile(project.Directory + "\\" + unixTime + ".jpg");

return image.GetPixel(0,0);
Определяем и загружаем фон:
string color = String.Empty;
//Определяем фон
if (image.GetPixel(0,0).ToString().Contains("R=76"))  color = red;
if (image.GetPixel(0,0).ToString().Contains("R=102"))  color = red2;
if (image.GetPixel(0,0).ToString().Contains("R=155"))  color = blue;
if (image.GetPixel(0,0).ToString().Contains("R=221")) color = white;

//Загружаем фон
byte[] imageBytes = Convert.FromBase64String(color);
   var ms = new MemoryStream(imageBytes);
    Bitmap sourceImage = new Bitmap(ms);
Спасибо. Но не работает.
Совершенно неинформативные части о скриншотах, о получении цвета пикселя и получении фонов.
Где хранится информация о цвете R ? и вообще о цветах пикселя?
Что делать если мне нужен 10:10 пиксель?
Я конкретно заморочился, сделал 22 фона в фотошопе, но 10:10 пиксель видимо не совпадает после сохранения примененного в фотошоп. Получил 10:10 пиксель через другую программу автоматизации. Иногда валятся ошибки if, но в основном просто слегка дергается рычажок и пазл никуда не попадает.
 
Регистрация
05.06.2019
Сообщения
570
Благодарностей
448
Баллы
63
Спасибо. Но не работает.
Совершенно неинформативные части о скриншотах, о получении цвета пикселя и получении фонов.
Где хранится информация о цвете R ? и вообще о цветах пикселя?
Что делать если мне нужен 10:10 пиксель?
Я конкретно заморочился, сделал 22 фона в фотошопе, но 10:10 пиксель видимо не совпадает после сохранения примененного в фотошоп. Получил 10:10 пиксель через другую программу автоматизации. Иногда валятся ошибки if, но в основном просто слегка дергается рычажок и пазл никуда не попадает.
1. Собрать по каждому изображению базу, чтобы получить базовое изображение.
2. Прогнать каждое изображение, собрать базу значений
C#:
HtmlElement he = instance.ActiveTab.GetDocumentByAddress("0").FindElementByAttribute("canvas", "class", "geetest_canvas_slice geetest_absolute", "regexp", 0);
he.SetAttribute("style", "opacity: 0; display: block;");
int left = Convert.ToInt32(he.GetAttribute("left"));
int top = Convert.ToInt32(he.GetAttribute("top"));
long unixTime = (long)(DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalMilliseconds;
ZennoPoster.ImageProcessingCropFromScreenshot(instance.Port, project.Directory + "\\" + unixTime + ".jpg", left, top, he.Width, he.Height, "pixel");
System.Threading.Thread.Sleep(1000);
System.Drawing.Bitmap image = (Bitmap)Bitmap.FromFile(project.Directory + "\\" + unixTime + ".jpg");

return image.GetPixel(0,0);
3. Конвертировать каждое изображение в base64
4. Допилить пиксели для эмуляции движений
 

sten30

Client
Регистрация
05.09.2017
Сообщения
224
Благодарностей
25
Баллы
28
2. Прогнать каждое изображение, собрать базу значений
C#:
HtmlElement he = instance.ActiveTab.GetDocumentByAddress("0").FindElementByAttribute("canvas", "class", "geetest_canvas_slice geetest_absolute", "regexp", 0);
he.SetAttribute("style", "opacity: 0; display: block;");
int left = Convert.ToInt32(he.GetAttribute("left"));
int top = Convert.ToInt32(he.GetAttribute("top"));
long unixTime = (long)(DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalMilliseconds;
ZennoPoster.ImageProcessingCropFromScreenshot(instance.Port, project.Directory + "\\" + unixTime + ".jpg", left, top, he.Width, he.Height, "pixel");
System.Threading.Thread.Sleep(1000);
System.Drawing.Bitmap image = (Bitmap)Bitmap.FromFile(project.Directory + "\\" + unixTime + ".jpg");

return image.GetPixel(0,0);
4. Допилить пиксели для эмуляции движений
Куда он пишет цвет пикселя? Где сохраняется эта база значений?
Что такое допилить пиксели?
Как сохранять фоны в фотошоп, чтобы сохранялись оригинальные цвета?
 
  • Спасибо
Реакции: Маломальский

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 791
Благодарностей
5 663
Баллы
113
а еще надо учитывать шумы в изображении. я когда свой плагинчик делал, столкнулся, что изображение часто немного искажено.
 

WLDN

Client
Регистрация
09.07.2015
Сообщения
355
Благодарностей
558
Баллы
93
Спасибо. Но не работает.
Совершенно неинформативные части о скриншотах, о получении цвета пикселя и получении фонов.
Где хранится информация о цвете R ? и вообще о цветах пикселя?
Что делать если мне нужен 10:10 пиксель?
Я конкретно заморочился, сделал 22 фона в фотошопе, но 10:10 пиксель видимо не совпадает после сохранения примененного в фотошоп. Получил 10:10 пиксель через другую программу автоматизации. Иногда валятся ошибки if, но в основном просто слегка дергается рычажок и пазл никуда не попадает.
Пожалуйста. Пишите так, как будто я Вам лично что-то должен по жизни. :bt:

Статья - бесплатный пример работы с библиотекой для решения GeeTest. Если поковыряться, можно найти методы получения .R .G .B цветов для каждого из пикселей типа integer и сравнивать их с помощью условий > или < или <= или >=

image.GetPixel(0,0) здесь несложно догадаться что 10:10 пиксель это: image.GetPixel(10,10)
 

sten30

Client
Регистрация
05.09.2017
Сообщения
224
Благодарностей
25
Баллы
28
Пожалуйста. Пишите так, как будто я Вам лично что-то должен по жизни. :bt:

Статья - бесплатный пример работы с библиотекой для решения GeeTest. Если поковыряться, можно найти методы получения .R .G .B цветов для каждого из пикселей типа integer и сравнивать их с помощью условий > или < или <= или >=

image.GetPixel(0,0) здесь несложно догадаться что 10:10 пиксель это: image.GetPixel(10,10)
Тема отличная. И что то стало разгадывать на Zennoposter 7.4
Но белые пятна статьи, куда девается цвет пикселя, не понятно.
Сторонние программы видимо вносят искажения в цвета фонов,
получение цвета пикселя другими программами тоже не очень вариант.
 

lx2003

Client
Регистрация
15.02.2021
Сообщения
376
Благодарностей
71
Баллы
28
А еще эта капча не нажимается стандартными способами зеннопостера
 
Регистрация
05.06.2019
Сообщения
570
Благодарностей
448
Баллы
63
А еще эта капча не нажимается стандартными способами зеннопостера
Нз, делал, и не раз, работало, но, но, но... много нюансов и порой профит не такой высокий.
То есть кол-во неудач, занимает больше времени, чем использовать сервисы, и вот как вариант использовать CapMonsterCloud GeeTest
 
  • Спасибо
Реакции: lx2003

lx2003

Client
Регистрация
15.02.2021
Сообщения
376
Благодарностей
71
Баллы
28

lx2003

Client
Регистрация
15.02.2021
Сообщения
376
Благодарностей
71
Баллы
28
Нз, делал, и не раз, работало, но, но, но... много нюансов и порой профит не такой высокий.
То есть кол-во неудач, занимает больше времени, чем использовать сервисы, и вот как вариант использовать CapMonsterCloud GeeTest
Хотелось бы найти наиболее дешевые варианты. Чтобы доходность хоть какая-то была
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 791
Благодарностей
5 663
Баллы
113
А еще эта капча не нажимается стандартными способами зеннопостера
Нажимается там все нормально. Элементы надо искать по правильному и все нажимается и находится.
 

lx2003

Client
Регистрация
15.02.2021
Сообщения
376
Благодарностей
71
Баллы
28

patryxa

Client
Регистрация
29.10.2021
Сообщения
24
Благодарностей
8
Баллы
3
Спасибо, принял на вооружение!
 

artur23

Client
Регистрация
14.04.2014
Сообщения
205
Благодарностей
15
Баллы
18
Компиляция кода Ошибка в действии "CS1503" "Argument 1: cannot convert from 'System.Drawing.Bitmap' to 'string'". [Строка: 4; Cтолбец: 46]
 

artur23

Client
Регистрация
14.04.2014
Сообщения
205
Благодарностей
15
Баллы
18
Компиляция кода Ошибка в действии "CS1503" "Argument 1: cannot convert from 'System.Drawing.Bitmap' to 'string'". [Строка: 4; Cтолбец: 46]
C#:
string color = project.Variables["image64"].Value;
//Загружаем фон
System.Drawing.Bitmap image = (Bitmap)Bitmap.FromFile(project.Variables["bg_pixel"].Value);
byte[] imageBytes = Convert.FromBase64String(image);
var ms = new MemoryStream(imageBytes);
Bitmap sourceImage = new Bitmap(ms);
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 791
Благодарностей
5 663
Баллы
113
Компиляция кода Ошибка в действии "CS1503" "Argument 1: cannot convert from 'System.Drawing.Bitmap' to 'string'". [Строка: 4; Cтолбец: 46]
строку надо подавать на вход этой процедуре, а не System.Drawing.Bitmap :bk:

103042
 

prostors

Client
Регистрация
16.12.2020
Сообщения
732
Благодарностей
26
Баллы
28
111064
такую капчу решит? она без ползунка
 

radv

Client
Регистрация
11.05.2015
Сообщения
3 508
Благодарностей
1 759
Баллы
113
Посмотреть вложение 111064такую капчу решит? она без ползунка
Тут показан пример нахождения места с кусочком пазла. Подобным способом можете попробовать определить оба места и перетащить один кусочек на другой. В принципе должно сработать
 

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