Клики с помощью js path на javascript на примере reddit

prostors

Client
Регистрация
16.12.2020
Сообщения
1 432
Благодарностей
68
Баллы
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 для отслеживания кликов и других действий, я так понял, что результат по этому событию отдаёт браузер и его можно получить и вывести в информер

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

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

// Перехватываем нативный метод 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"); по координатам
 
Последнее редактирование:
  • Спасибо
Реакции: spbalexpiter и brun0

kagorec

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

smartmail

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

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