Клики с помощью JS path на JavaScript, как получить isTrusted:true действиями Zennoposter. v1.3

prostors

Client
Регистрация
16.12.2020
Сообщения
1 456
Благодарностей
71
Баллы
48
Я попробовал на базовых действиях, с помощью css селекторов и xpath, были срабатывания через раз, было игнорирование кликов.

В качестве рабочего решения нормально себя показал js path на javascript.

js path берём из devtools:
141193
,
что позволило нормально отработать с shadow root (opened) и клики срабатывали более стабильно.

мы берём js path и с помощью фри версии gemini просим создать клик на кнопке, иногда просто click() не срабатывает и нужен ещё и фокус, но всё равно, в итоге клик удаётся реализовать и клик принимает сайт

тема подсмотрена мной на ютубе, кому интересно можете поискать по shadow root или shadow dom.

в результате того, что сайты постоянно меняют вёрстку, приходится js path обновлять и это привело к тому, что об ошибке я настроил уведомления в телеграмм бота со скриншотами



Выводы:
  • добавить js path в конструктор действий и контекстное меню(правой кнопкой мыши) в зеннопостер
  • добавить вывод оповещений, не в tg или другие сервисы, а внутри зенно, сейчас лог очень общий и туда сыпется всё подряд, сделать отдельную вкладку для важных оповещений
  • добавить вывод события isTrusted: true, которое только для чтения, в PM для отслеживания кликов и других действий, я так понял, что результат по этому событию отдаёт браузер и его можно получить и вывести в информер
  • https://zenno.club/discussion/threads/kliki-s-pomoschju-js-path-na-javascript-kak-poluchit-istrusted-true-dejstvijami-zennoposter.132374/post-877090 предложение по развитию интерфейса

Иллюзия «Closed» режима и как его взломать
Мы говорили, что Shadow DOM бывает open (доступен через .shadowRoot) и closed (возвращает null). Многие разработчики думают, что closed — это надежная защита от парсинга. Это не так.

твой скрипт запускается до того, как сайт создал свои компоненты (на этапе document-start), ты можешь перехватить создание теневых деревьев:

Как обойти Closed режим Shadow Root:
// Перехватываем нативный метод attachShadow
const originalAttachShadow = Element.prototype.attachShadow;
Element.prototype.attachShadow = function(options) {
    // Принудительно делаем ВСЕ закрытые деревья открытыми
    if (options.mode === 'closed') {
        options.mode = 'open';
    }
    return originalAttachShadow.call(this, options);
};

клик на с# по js path срабатывает для instance.ActiveTab.MainDocument.EvaluateScript("document.querySelector('...').click();");

клик, который отдаёт isTrusted true instance.ActiveTab.FullEmulationMouseClick("left", "click"); по координатам:

прикрепляю шаблон 7.8.15 с 3 действиями - поиск координат по js path, split по разделителю для получения 4-х координат и клик мышью с полной эмуляцией, распределение равномерное
141365


но, в рамках соблюдения анонимности, я не рекомендую дёргать js path или xpath каждый раз при поиске координат кнопок, а рекомендую 1 раз собрать и хранить координаты в txt файле.

прикрепляю шаблон с получением isTrusted - true с кликом по координатам

очередное обновление:
мои разрешения экранов для кликов по координатам

1903x937
1903x850
1519x820
1349x650
1349x700
и тд

xml, который я сохраняю в файл, для каждого размера экрана браузера:

xml для координат кликов по кнопкам:
<?xml version="1.0" encoding="UTF-8"?>
<root>
  <objectName>{-Variable.displayx-}</objectName>
  <display{-Variable.displayx-}>
    <Avatar name="Avatar">
      <coords x1="{-Variable.x1-}" y1="{-Variable.y1-}" x2="{-Variable.x2-}" y2="{-Variable.y2-}" />
    </Avatar>
    <usermenu name="usermenu">
      <coords x1="{-Variable.x1usermenu-}" y1="{-Variable.y1usermenu-}" x2="{-Variable.x2usermenu-}" y2="{-Variable.y2usermenu-}" />
    </usermenu>
        <downloadbanner name="downloadbanner">
      <coords x1="{-Variable.x1downloadbanner-}" y1="{-Variable.y1downloadbanner-}" x2="{-Variable.x2downloadbanner-}" y2="{-Variable.y2downloadbanner-}" />
    </downloadbanner>
        <upload name="upload">
      <coords x1="{-Variable.x1upload-}" y1="{-Variable.y1upload-}" x2="{-Variable.x2upload-}" y2="{-Variable.y2upload-}" />
    </upload>
        <savebanner name="savebanner">
      <coords x1="{-Variable.x1savebanner-}" y1="{-Variable.y1savebanner-}" x2="{-Variable.x2savebanner-}" y2="{-Variable.y2savebanner-}" />
    </savebanner>
  </display{-Variable.displayx-}>
</root>
файл храню на сервере и подгружаю для каждого запуска

Помощь с JS path и сайтами закрытыми с помощью Shadow Dom - бесплатно!
 

Вложения

Последнее редактирование:

kagorec

Client
Регистрация
24.08.2013
Сообщения
1 137
Благодарностей
647
Баллы
113
Хороший конкурс и статьи забавные
 

smartmail

Client
Регистрация
18.04.2015
Сообщения
471
Благодарностей
246
Баллы
43
Последнее редактирование модератором:
  • Спасибо
Реакции: kagorec и seodamage

prostors

Client
Регистрация
16.12.2020
Сообщения
1 456
Благодарностей
71
Баллы
48
пишите по теме конкурсной работы в комментариях, все остальные комментарии перенесите в другие разделы и пишите изначально там
@smartmail @kagorec
 

prostors

Client
Регистрация
16.12.2020
Сообщения
1 456
Благодарностей
71
Баллы
48
Друзья!
в рамках конкурса я готов помочь вам с js path и кодом для эмуляции кликов по вашим элементам, пишите заявки в этой теме, будем обсуждать и искать решение!
 
  • Спасибо
Реакции: Sergodjan

prostors

Client
Регистрация
16.12.2020
Сообщения
1 456
Благодарностей
71
Баллы
48
было обновление, где я добавил про поиск координат, сплит и клик по кнопке, будут ещё обновления, ждите и заходите проверяйте обновления!
 
Последнее редактирование:

prostors

Client
Регистрация
16.12.2020
Сообщения
1 456
Благодарностей
71
Баллы
48
новое обновление.
пример, как получить isTrusted - true, если вы знаете другой способ, кроме как по координатам - пишите тут.
 

prostors

Client
Регистрация
16.12.2020
Сообщения
1 456
Благодарностей
71
Баллы
48
обновление.
у меня настроены разные разрешения экранов. поэтому координаты кликов меняются. Смотрите очередное обновление внизу статьи. какие разрешения экранов браузера используете вы - пишите тут, будем обсуждать.
 

prostors

Client
Регистрация
16.12.2020
Сообщения
1 456
Благодарностей
71
Баллы
48
обновление.
я готов ответить на ваши вопросы в рамках блока «Вопрос-ответ», самые лучшие вопросы будут вынесены в основную статью
 

prostors

Client
Регистрация
16.12.2020
Сообщения
1 456
Благодарностей
71
Баллы
48
разместить в шапке, где песочные часы, добавить к текущей записи дополнительных событий:
141397

т.е. создать 4 новых кнопки для:
1. уже есть - css селектор, разделить, сделать отдельно от xpath
2. добавить клики по xpath - есть, но надо переключать внутри действия и будет собираться и css селектор и xpath сразу, а нужно что-то одно, т.е. разделить, чтобы не было 2 обращения к сайту, когда достаточно одного обращения
3. добавить клики по js path
4. добавить клики по координатам, с заданием площадей, скрин добавляю, для равномерных кликов
141395

5. добавить клики по картинкам
141396

любое обращение к css селектору, xpath, js path может логироваться для отслеживания ботов
 

prostors

Client
Регистрация
16.12.2020
Сообщения
1 456
Благодарностей
71
Баллы
48
обновление.
Разберём ситуацию по выявлению причин и обновлению проекта:
1. результаты по проекту совсем пропали;
2. мы начинаем проверять сайт, с которым работаем;
3. в результате находим, что появился блок на сайте, который логирует количество обращений к xpath, js path или css селекторам или isTrusted;
4. переводим проект на клики по координатам или по клики по картинкам, предварительно проверив эффективность руками в 2-3 или более прогонов;
5. проект заработал и снова приносит результат.

всегда начинай проверку с ручного метода, а только потом переноси в автоматизацию на zennoposter. это может тебе сэкономить много времени.
 

prostors

Client
Регистрация
16.12.2020
Сообщения
1 456
Благодарностей
71
Баллы
48
как я себе вижу информер isTrusted:
  • true;
  • false;
  • клик не определяется isTrusted.
141408
и так для всех действий, где есть клик или input или другое действие, определяемое isTrusted
 

prostors

Client
Регистрация
16.12.2020
Сообщения
1 456
Благодарностей
71
Баллы
48
обновление от ИИ
В современных браузерах (особенно в Safari и Chrome на экранах с высокой плотностью пикселей) события PointerEvent и TouchEvent могут содержать дробные значения координат (например, clientX: 100.5). В то же время старые методы эмуляции часто оперируют только целыми числами. Использование исключительно целых координат на устройствах, которые по своему отпечатку (fingerprint) должны поддерживать дробную точность, является статистической аномалией, используемой для детекции ботов.
у нас при клике по координатам нет десятичных, сотых и тд, есть предложение добавить в возможности
 

prostors

Client
Регистрация
16.12.2020
Сообщения
1 456
Благодарностей
71
Баллы
48
обновление.
задача на обсуждение для антифрода.
ситуация-кейс:
  • нужно отследить ботов на сайте;
  • на сайте не использовали js path, xpath, css селекторы при разработке;
  • настраиваем логи на js path, xpath, css селекторы;
  • в случае использования посетителем js path, xpath или css селекторов получаем триггер об этом;
  • очень большая вероятность, что те посетители, которые используют js path, xpath, css селекторы на сайте, который в разработке не использует js path, xpath, css селекторы - боты;
  • выводим таким посетителям страницу-заглушку с капчами и уведомлениями о том, что они боты и могут уйти на другой сайт;
результат - получаем на основании логирования js path, xpath, css селекторы чуть более чистую, от ботов, аудиторию, которую можно более качественно обрабатывать в дальнейших наработках.

P.S. эта ситуация описана как одна из возможных, но не единственное решение, т.е. я не рекомендую отключать все остальные системы антифрода и оставлять только логирование и триггеры описанные выше.
 

prostors

Client
Регистрация
16.12.2020
Сообщения
1 456
Благодарностей
71
Баллы
48
поговорим про "шум"
задача-кейс:
  • нужно выполнить клик;
  • мы сначала подводим мышку;
  • ждём пока выплывет title или alt или по другому описание во всплывающем окне;
  • дрожим мышкой;
  • делаем, так называемые
    • рывки,
    • плавные замедления
    • микро-промахи (overshoot)
    • корректировки
    • фокус
  • только потом кликаем на кнопке, картинке или другом элементе;
эти все настройки дают human-like - человекоподобное поведение - "шум" - биохакинг движения мыши - биоэмуляцию поведения

аномалии при клике могут, но не исключая, триггернуть системы антифрода
а также повтор уникального поведения, о чём поговорим в следующих комментариях
 

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