Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Доступ к элементам DOM в браузере MS Edge с чужого процесса. (https://javascript.ru/forum/events/84338-dostup-k-ehlementam-dom-v-brauzere-ms-edge-s-chuzhogo-processa.html)

VladK 09.08.2022 12:46

Доступ к элементам DOM в браузере MS Edge с чужого процесса.
 
Всем доброго времени суток!
Мне тут задачу на работе поставили - раскопать есть ли возможность "достучаться" до элементов HTML-документа с чужого процесса.
Попробую пояснить подробнее: юзер открывает мою страницу в браузере(EDGE в основном) и браузер становится в режим некоего ожидания от запуска моей же аппликации на компе. Я запускаю аппликацию, на старте у меня есть код, который находит окно с моей страницей, затем находит привязанный HTML document, затем некоторый условный элемент внутри этого документа. Потом моя аппликация меняет значение в этом элементе скажем с 0 на 1, документ по таймеру(раз в секунду) опрашивает это значение, и как видит единицу, меняет картинку на браузере. Моя задача - сообщить браузеру таким способом, что аппликация побежала, чтобы браузер отреагировал нужным образом.
Есть несколько моментов - я слышал, что в браузере IE это можно было сделать без проблем, но не знаю возможно ли это вообще в других браузерах.
И еще - знает ли кто-нибудь, как к подобным фокусам относятся антивирусы? Потому что если плохо, то я не хочу, чтобы мою аппликацию сразу зарезали живьем, и буду искать другие способы.
Заранее 10х

voraa 09.08.2022 19:53

Что такое аппликация и что такое "нужная" реакция браузера?
И что такое "чужой процесс"? Другая вкладка на которой открыта другая страница? Или какая то совсем посторонняя задача, написанная, например, на C?

Aetae 09.08.2022 20:19

Смотря что именно у тебя за задача.
Простейшее решение для всех браузеров - браузерное расширение которое делает что надо, а не внешнее приложение.
Браузеры также поддерживают подключение по дебаг протоколу из внешнего приложения. Через оный вполне можно управлять браузером, то требуется либо разрешение от юзера, либо старт со специальным флагом.
Отдельно вариант написать приложение на основе браузера: electron или чисто виндовый hta.

COM интерфейс как старый IE насколько я знаю современне браузеры не предоставляют. Вместо этого они поддерживают WebDriver.

MallSerg 09.08.2022 20:53

Уровень постановки задачи наводит на мысли о госконторе.
Предположительно !!!!
Кто то забивает данные в вебморду сервиса в интернете но контора которая забивает данные в веб морду хочет и сама иметь доступ к этим данным крутить отчеты и прочую аналитику вот руко.водитель нашол крайнего тыжпрограммиста и поставил ему задачу.

Во всех браузерах это решают добавлением расширения браузера (content script). По сути это обычный JS скрипт который браузер загружает при открытии страницы
как пример для эджа https://docs.microsoft.com/ru-ru/sho...-edgeextension

VladK 10.08.2022 16:00

Цитата:

Что такое аппликация и что такое "нужная" реакция браузера?
И что такое "чужой процесс"? Другая вкладка на которой открыта другая страница? Или какая то совсем посторонняя задача, написанная, например, на C?
Верно, это абсолютно внешняя программа, написанная на С++ или Шарпе.
А "нужная" реакция - это как-то сообщить браузеру, что программа побежала и чтобы браузер как-то среагировал, например, выдал текст большими буквами: "Я вижу, что ты запустил мою любимую игру, дорогой юзер!"

Цитата:

Уровень постановки задачи наводит на мысли о госконторе.
Предположительно !!!!
Кто то забивает данные в вебморду сервиса в интернете но контора которая забивает данные в веб морду хочет и сама иметь доступ к этим данным крутить отчеты и прочую аналитику вот руко.водитель нашол крайнего тыжпрограммиста и поставил ему задачу.
Не госконтора, но почти шарашкина :) .
Мне повезло, нашел старого знакомого, который объяснил, что доступ вот так снаружи из внешнего чужого процесса к веб-морде в любом браузере это нарушение безопасности, и любой антивирус тут же начнет кидаться на мою утилиту. Так что буду обдумывать другой способ. Если найду что-то не очень "серое" - постараюсь отписаться. Всем спасибо!


Часовой пояс GMT +3, время: 18:57.