Сниппеты эмуляции мыши: FullEmulationMouse

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
22 519
Благодарностей
10 068
Баллы
113
Хоть убейте, не пойму: неужто сложно сделать кубик прокрутки колесика мышки??? Разрабы!
Хорошая идея. Можете создать тему в разделе Предложения.
Планируется развивать ассортимент действий в скором будущем.
Будем вычитывать раздел Предложения, смотреть на голосования и брать в реализацию.
 
  • Спасибо
Реакции: code

DocSpoc

Client
Регистрация
04.01.2016
Сообщения
295
Благодарностей
176
Баллы
43
Хорошая идея. Можете создать тему в разделе Предложения.
Планируется развивать ассортимент действий в скором будущем.
Будем вычитывать раздел Предложения, смотреть на голосования и брать в реализацию.
да мне казалось это мегаочевидно...
 
  • Спасибо
Реакции: Tony80

nvrskozzy

Client
Регистрация
11.07.2025
Сообщения
276
Благодарностей
31
Баллы
28
мне вот этот кубик c# помогает
C#:
instance.ActiveTab.FullEmulationMouseWheel(0, 1000);
мышь уже должна быть в нужном поле которое надо проскролить
 

DocSpoc

Client
Регистрация
04.01.2016
Сообщения
295
Благодарностей
176
Баллы
43
мне вот этот кубик c# помогает
C#:
instance.ActiveTab.FullEmulationMouseWheel(0, 1000);
мышь уже должна быть в нужном поле которое надо проскролить
да я тоже его использую. но стандартный кубик не помешал бы, особенно новичкам
 
  • Спасибо
Реакции: nvrskozzy

nvrskozzy

Client
Регистрация
11.07.2025
Сообщения
276
Благодарностей
31
Баллы
28
он у меня не всегда работает кстати, хотя реальная мышка работает, обычно я выбираю блок на странице который нужно прокрутить кликом мышки кубиком эмуляции мышки по координатам, а потом этот си код на колесо мыши, но есть сайты где это не работает. а эмуляция клавитатуры END работает после клика мышки исправно, создается впечатления что после кубика эмуляция мыши и клика по координатам мышка как бы исчезает, и если она не висит над формой то прокрутки не происходит, с реальной мышкой нет проблем. кто сталкивался? если я прав в причине, то как заставить мышку всегда находиться на заданных координатах, а не кликнуть и исчезнуть?
 

kolina

Client
Регистрация
05.10.2019
Сообщения
188
Благодарностей
93
Баллы
28
А эмуляция клавиатуры не помогает, если для новичков? {DOWN} или {SHIFTDOWN}
 

nvrskozzy

Client
Регистрация
11.07.2025
Сообщения
276
Благодарностей
31
Баллы
28
А эмуляция клавиатуры не помогает, если для новичков? {DOWN} или {SHIFTDOWN}
от сайта зависит, помогает, просто я подумал это выглядит нечеловечно, обычно человек мышку использует
 

LarinOk

Client
Регистрация
07.01.2026
Сообщения
17
Благодарностей
3
Баллы
3
Подскажите, пожалуйста некоторые моменты:

1) При FullEmulationMouseClick("left", "click") есть пауза между mousedown и mouseup, если да то она статичная или рандомная?

2) В FullEmulation параметрах есть MinScrollSpeed и MaxScrollSpeed, по умолчанию оба по 20. Это "скорость вращения" колеса мыши или расстояние за одну прокрутку? Не могу понять, нужно ли делать разброс или нет.
 

Dmitriy_Zenno

Administrator
Регистрация
28.10.2025
Сообщения
457
Благодарностей
191
Баллы
43
Подскажите, пожалуйста некоторые моменты:

1) При FullEmulationMouseClick("left", "click") есть пауза между mousedown и mouseup, если да то она статичная или рандомная?

2) В FullEmulation параметрах есть MinScrollSpeed и MaxScrollSpeed, по умолчанию оба по 20. Это "скорость вращения" колеса мыши или расстояние за одну прокрутку? Не могу понять, нужно ли делать разброс или нет.
По пункту 1 - информации не нашел. Если я правильно понял инструмент, то там не должно быть паузы, вы сами ее делаете: выполнить left + down - своя пауза \ действия - выполнить left + up.

По пункту 2 - нашел такую информацию:
139338
 
  • Спасибо
Реакции: LarinOk

LarinOk

Client
Регистрация
07.01.2026
Сообщения
17
Благодарностей
3
Баллы
3
FullEmulationMouseClick, без разницы Up, Down или Click делать, всегда стреляет перед нажатием событием mousemove в туже точку. В результате имеем: а) задвоение mousemove в 100% кликов б) микрозадержка <10мс до mousedown которую корректировать нельзя. Мягко говоря не очень красиво получается.

И есть ли какой нибуть способ отключить рисование "дуги" в FullEmulationMouseMove? Все облазил, ничего найти не смог. В текущем варианте, если к примеру пытаться делать имитацию"дрожания", то при смещении на 1-5px этот метод работает неочень. Пробовал обычный MouseMove но с ним не могу найти где скорость можно регулировать.
 

Dmitriy_Zenno

Administrator
Регистрация
28.10.2025
Сообщения
457
Благодарностей
191
Баллы
43
FullEmulationMouseClick, без разницы Up, Down или Click делать, всегда стреляет перед нажатием событием mousemove в туже точку. В результате имеем: а) задвоение mousemove в 100% кликов б) микрозадержка <10мс до mousedown которую корректировать нельзя. Мягко говоря не очень красиво получается.

И есть ли какой нибуть способ отключить рисование "дуги" в FullEmulationMouseMove? Все облазил, ничего найти не смог. В текущем варианте, если к примеру пытаться делать имитацию"дрожания", то при смещении на 1-5px этот метод работает неочень. Пробовал обычный MouseMove но с ним не могу найти где скорость можно регулировать.
Я вас понял. Спасибо за описание.
Проверю у себя и подумаю, что можно сделать.
 

Tony80

Client
Регистрация
21.07.2021
Сообщения
220
Благодарностей
68
Баллы
28
да я тоже его использую. но стандартный кубик не помешал бы, особенно новичкам
Всецело поддерживаю.

В действительности то, что выполняет кубик "Имитация просмотра страницы" скорее наводка для антифрод систем, нежели попытки продемонстрировать живую активность. Пользователи в общем и в целом по заголовкам текста и картинкам мышкой не елозят, тем более, что все длинные перемещения строго геометрические.

При чтении мышка как правило размещается справа чуть ниже середины и выполняет подёргивания от шевелений кисти.

"Имитация просмотра страницы" полезна лишь на короткое время, чтобы выполнить некое базовое шевеление, а дальше чаще всего в этой имитации нужен лишь вертикальный скроллинг, либо целевой клик.

Но если последовательно размещать короткие кубики по Имитации просмотра (и даже короткие строчки C# кода для скроллинга), то проблема в том, что при переключении мышка пропадает, поэтому наиболее полезным был бы составной кубик, где можно было бы выполнить небольшой сценарий, именно для того, чтобы мышь не пропадала.

Либо сделать некие "склеивающие" кубики, где предыдущий передаёт, а последующий принимает позицию курсора без прерываний при составной последовательности кубиков. Вот это было бы интересным решением.
 
  • Спасибо
Реакции: DocSpoc

Tony80

Client
Регистрация
21.07.2021
Сообщения
220
Благодарностей
68
Баллы
28
После множества попытка написать с помощью ChatGPT хоть какой-то код более-менее похоже имитирующий человеческие движения мыши (без кликов, просто скроллинг и колебания курсора мыши), множественные варианты кода упираются в одну и ту же аномалию - курсор начинает ползти вверх и прилипать к верхней границе окна.

ChatGPT сообщает,

139782

Получается имитация даже приближенной версии к реальному поведении мыши в текущей версии движка под большим вопросом.

Попытки переделать функционал под JS тоже оказались тупиковыми,

139783

139784
 

Dmitriy_Zenno

Administrator
Регистрация
28.10.2025
Сообщения
457
Благодарностей
191
Баллы
43
После множества попытка написать с помощью ChatGPT хоть какой-то код более-менее похоже имитирующий человеческие движения мыши (без кликов, просто скроллинг и колебания курсора мыши), множественные варианты кода упираются в одну и ту же аномалию - курсор начинает ползти вверх и прилипать к верхней границе окна.

ChatGPT сообщает,

Посмотреть вложение 139782

Получается имитация даже приближенной версии к реальному поведении мыши в текущей версии движка под большим вопросом.

Попытки переделать функционал под JS тоже оказались тупиковыми,

Посмотреть вложение 139783

Посмотреть вложение 139784
Данная задача довольно сложная в реализации.
Если у вас нет знаний в программировании на C# для вас она будет очень сложная. Так как вы используете Chat GPT, а он не знает всех методов ZP, поэтому он будет часто ошибаться и писать того, чего нет.

Для более адекватной работы ИИ, могу посоветовать вам скармливать ИИ вот такой XML. Там есть описание доступных методов для написания правильного кода.
 

Вложения

  • Спасибо
Реакции: Tony80

Tony80

Client
Регистрация
21.07.2021
Сообщения
220
Благодарностей
68
Баллы
28
Для более адекватной работы ИИ, могу посоветовать вам скармливать ИИ вот такой XML. Там есть описание доступных методов для написания правильного кода.
Да, я понимаю, что с нуля ChatGPT может "изобретать" выводы и тех. следствия, спасибо большое за ценные уточнения, постараюсь использовать представленные методы.
 
  • Спасибо
Реакции: Dmitriy_Zenno

Tony80

Client
Регистрация
21.07.2021
Сообщения
220
Благодарностей
68
Баллы
28

Dmitriy_Zenno

Administrator
Регистрация
28.10.2025
Сообщения
457
Благодарностей
191
Баллы
43
  • Спасибо
Реакции: Tony80

b1zar

Client
Регистрация
29.06.2019
Сообщения
159
Благодарностей
93
Баллы
28
После множества попытка написать с помощью ChatGPT хоть какой-то код более-менее похоже имитирующий человеческие движения мыши (без кликов, просто скроллинг и колебания курсора мыши), множественные варианты кода упираются в одну и ту же аномалию - курсор начинает ползти вверх и прилипать к верхней границе окна.

ChatGPT сообщает,

Посмотреть вложение 139782

Получается имитация даже приближенной версии к реальному поведении мыши в текущей версии движка под большим вопросом.

Попытки переделать функционал под JS тоже оказались тупиковыми,

Посмотреть вложение 139783

Посмотреть вложение 139784
FullEmulation не подходит для такой задачи, так как в этом методе уже частично реализовано дрожания и минимальные отхождения от прямой траектории, так как он состоит не просто из движения от А к Б, а с дополнительными патернами на неленейность, то выполняя такое в цикле он будет очень медленным. Нужно использовать instance.ActiveTab.MouseMove(х, y) он в цикле работает быстро, если даже написать патерны на плавность, будет не отличим от настоящей мышки, но у него есть минус он не запоминает текущие координаты, поэтому для правдоподобности нужно будет создать переменные куда будет записываться последняя точка xy. А для эмуляции скролла использовать instance.ActiveTab.MouseWheel(CurrentPosition[0], CurrentPosition[1], 0, 100); в цикле с задержками и естественными микростопами, если нужно реализовать дрожание или увод во время скролла, то нужно использовать асинхронные методы
 
  • Спасибо
Реакции: Dmitriy_Zenno и Tony80

Tony80

Client
Регистрация
21.07.2021
Сообщения
220
Благодарностей
68
Баллы
28
FullEmulation не подходит для такой задачи, так как в этом методе уже частично реализовано дрожания и минимальные отхождения от прямой траектории, так как он состоит не просто из движения от А к Б, а с дополнительными патернами на неленейность, то выполняя такое в цикле он будет очень медленным. Нужно использовать instance.ActiveTab.MouseMove(х, y) он в цикле работает быстро, если даже написать патерны на плавность, будет не отличим от настоящей мышки, но у него есть минус он не запоминает текущие координаты, поэтому для правдоподобности нужно будет создать переменные куда будет записываться последняя точка xy. А для эмуляции скролла использовать instance.ActiveTab.MouseWheel(CurrentPosition[0], CurrentPosition[1], 0, 100); в цикле с задержками и естественными микростопами, если нужно реализовать дрожание или увод во время скролла, то нужно использовать асинхронные методы
Огромное спасибо за новую и очень ценную для меня информацию :ay: За неё также благодарит и GPT :-)

139808

TO ALL:

Пока я реализовал затейливый скроллинг без елозания мышки по элементам (что всегда мне не нравилось и выглядит из кубика очень неестественно).

Пока алгоритм такой - курсор нелинейно переводится в правую часть (имитация того, что пользователь отводит мышку в сторону) и начинается вариативный скроллинг c паузами, остановками, возвратами, изменением скорости прочтения, без работы с курсором.

Конечно это лучше и интереснее, чем просто базовый:

instance.ActiveTab.FullEmulationMouseWheel(0, 1000);

хотя и до идеала конечно пока далеко.

Готов делиться, кому интересно, потому что сообщество и тех. поддержка у нас замечательные :ay: а значит надо соответствовать :-)

Дальше с GPT я продолжу развиваем логику нового архитектурного решения с учетом очень ценного комментарий от b1zar :bi:
 
  • Спасибо
Реакции: b1zar и Dmitriy_Zenno

Tony80

Client
Регистрация
21.07.2021
Сообщения
220
Благодарностей
68
Баллы
28
Коллеги есть принципиально важный вопрос. В связи с отработками рабочих гипотез я уперся в проблему периодического мигания курсора.
После множества рабочих итераций код CHATGPT пришёл к следующему выводу,

139832

139833

139834

так ли это?
 

Dr.Pipetka

Client
Регистрация
12.12.2017
Сообщения
1 454
Благодарностей
977
Баллы
113
Коллеги есть принципиально важный вопрос. В связи с отработками рабочих гипотез я уперся в проблему периодического мигания курсора.
После множества рабочих итераций код CHATGPT пришёл к следующему выводу,

Посмотреть вложение 139832

Посмотреть вложение 139833

Посмотреть вложение 139834

так ли это?
Клик зенно кривой до безумия. Если нужен настоящий клик - открываете инстанс, ищите абсолютные координаты и кликаете через ардуино. Или просто мучаете нейрончики, которые дадут немного рабочий код который подойдет под ваш сайт.
 

Tony80

Client
Регистрация
21.07.2021
Сообщения
220
Благодарностей
68
Баллы
28
Клик зенно кривой до безумия.
Если нужен настоящий клик - открываете инстанс, ищите абсолютные координаты и кликаете через ардуино.
К сожалению, я не указал - меня сейчас интересует только скроллинг и положение курсора во время скроллинга.
События кликов я пока не рассматриваю.

Или просто мучаете нейрончики, которые дадут немного рабочий код который подойдет под ваш сайт.
Мучаю пятый день, по кругу упирался в разного рода аномалии, с тряской и неестественным поведением мыши. Потом в результате переборки множества сценариев AI объявил, что курсор - это фактически не живой курсор, а отрисованный слой, который живёт по своим законам.

Именно поэтому я испрашиваю, потому что если пропадание курсора в браузере ПМ - это лишь артефакт (или заданность движка), то эту проблему можно опустить, ведь при реальной сессии мышки будет на месте и никуда пропадать не будет. Или это не так, и тогда придётся в статическом движении генерировать микродвижения незаметные глазу, чтобы курсор всегда находился в последовательном процессе.
 

Dr.Pipetka

Client
Регистрация
12.12.2017
Сообщения
1 454
Благодарностей
977
Баллы
113
только скроллинг и положение курсора во время скроллинга
Масштаб ОС 100%, шрифты 100%. Мб поможет. Если RDP, тогда не отключать (вроде помогало людям).
Мучаю пятый день
Лучше создать новый чат и там переспросить, переформулируя.
курсора в браузере ПМ - это лишь артефакт (или заданность движка)
Мышка в зенке редко когда работает нормально, сотня тем на форуме где это обсуждалось. Либо кликак криво, либо тормозил, либо еще что то....
 

Tony80

Client
Регистрация
21.07.2021
Сообщения
220
Благодарностей
68
Баллы
28
Масштаб ОС 100%, шрифты 100%. Мб поможет. Если RDP, тогда не отключать (вроде помогало людям).
С вопросами траектории и адаптации курсора под весь цикл скроллинга проблем нет, интересует только вопрос связанный со статическим положением курсора.
Если мышь не двигается, то курсор мыши пропадает. Если делать паузы в последовательных действия - курсор мигает, обозначая начало и конец рабочего действия мышкой.

Вопрос - физически при работе целевой работе мышка будет пропадать или его появление - это просто рабочий интервал, когда она просто задействована?

Тема вроде подходящая - про эмуляцию мыши.
 

Dr.Pipetka

Client
Регистрация
12.12.2017
Сообщения
1 454
Благодарностей
977
Баллы
113
С вопросами траектории и адаптации курсора под весь цикл скроллинга проблем нет, интересует только вопрос связанный со статическим положением курсора.
Если мышь не двигается, то курсор мыши пропадает. Если делать паузы в последовательных действия - курсор мигает, обозначая начало и конец рабочего действия мышкой.

Вопрос - физически при работе целевой работе мышка будет пропадать или его появление - это просто рабочий интервал, когда она просто задействована?

Тема вроде подходящая - про эмуляцию мыши.
То что отображается не соответствует реальности. На некоторых сайтах ок, на некоторых нет. (в смысле положение курсора там, а клик не там).
Тут все индивидуально.
 

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