LINUX.ORG.RU

Связь браузера с локальной системой

 , , ,


0

2

Нужен канал связи между js рантаймом страницы и локальной системой. Фраза для поиска в гугле тоже пойдёт. Единственное что придумал - мониторить localstorage.
Мб есть какие-то кастомные сборки, которые позволяют делать дела прямо из js кода?

Ответ на: комментарий от crutch_master

Чтобы из нативного кода можно было передавать данные в js код страницы и обратно

Вопрос в том, что за прикладную задачку ты пытаешься решить? Хотя бы в двух-трех словах. А так, через Puppeteer конечно можно гонять данные туда-сюда - смотреть, что в этот момент имеется в DOM-е.

vinvlad ★★
()
Ответ на: комментарий от crutch_master

Чтобы из нативного кода можно было передавать данные в js код страницы и обратно.

Встроить в нативный код браузерный движок от соответствующего тулкита и передавать всё, что хош.

annulen ★★★★★
()
Ответ на: комментарий от vinvlad

Puppeteer

Не пойдёт, потому что надо отслеживать именно человеческую активность. Если надо было просто тыкать на div'ы я бы взял селениум или любую другую хрень для тестов.

crutch_master ★★★★★
() автор топика
Ответ на: комментарий от crutch_master

Эмуляция активности юзера на странице.

Ну тогда Puppeteer - самое то. Собственно он и используется в основном для тестирования веб-приложений, для парсеров… Есть еще еще всякие API-шки на основе Selenium - типа Nightwatch. Там можно с разными обозревателями работать. Puppeteer работает с Chromium, ну или Google Chrome.

Если отслеживать активность - то тут не скажу.

vinvlad ★★
()
Последнее исправление: vinvlad (всего исправлений: 1)
Ответ на: комментарий от crutch_master

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

Я что-то подобное делал когда в игре баг отлавливал, он мог произойти через секунду, а мог через неделю и я в цикле запускал действия теоретически к нему приводящие которые 1000+ раз повторялись до появления артефактов которые регала уже другая программа. Ну как пример

LINUX-ORG-RU ★★★★★
()
Последнее исправление: LINUX-ORG-RU (всего исправлений: 1)
Ответ на: комментарий от vinvlad

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

crutch_master ★★★★★
() автор топика
Ответ на: комментарий от LINUX-ORG-RU

Может в виртуалке просто открыть браузер во весь экран виртуалки

Кликать по экрану я могу. Скрипты выполнять в браузере могу. Вот надо их связать.
Кстати, можно же через clipboard сделать связь)

crutch_master ★★★★★
() автор топика
Ответ на: комментарий от crutch_master

можно же через clipboard сделать связь)

Не понял, чем тебе http/ws не подходят? Делаешь запрос на локальный демон, который делает в системе что нужно.

ddidwyll ★★★★
()
Последнее исправление: ddidwyll (всего исправлений: 1)
Ответ на: комментарий от crutch_master

Т.е. на странице что-то делается, это что-то передаётся в скрипт, там условных xdotool возит мышкой что-то тыкает и нажимает.

Всё равно не понятно )) Единственно, могу сказать, что Puppeteer - гораздо более функциональная и мощная штука, чем всякие селениумы.

vinvlad ★★
()
Ответ на: комментарий от crutch_master

Кстати, можно же через clipboard сделать связь)

А чего бы и нет. С учётом того что да помещения в буфер обмена нужно просто выделить текст в нужном месте без всяких контекстных меню. Может быть вполне удобно, главное что-бы координаты выделяемого были одинаковы чтобы можно было записать действия ручные для их последующего корректного воспроизведения или не записывать, а просто xdotool дёргать по координатам известным.

Но я через xnee (вроде им, уже не помню точно) в cs:go через интерфейс стима 2300 наклеек продавал. Я купил из за паку копеек за штуку, думал подрастут, а не подрасли, а избавится от этого хлама надо было, вручную сдохнешь кликать по штучке сливать на торговую площадку. Тупо запустил запись своих действий, продал одну и всё, запустил в цикле воспроизведение своих действий и спать пошёл :)

LINUX-ORG-RU ★★★★★
()
Последнее исправление: LINUX-ORG-RU (всего исправлений: 1)
Ответ на: комментарий от ddidwyll

Не понял, чем тебе http/ws не подходят?

Тем, что надо:
1. На странице писать код, который будет отдавать данные в эндпоинт на сервере
2. на сервере надо получить данные и хранить до запроса с локального компа
3. Или отправить их сразу в ws, для этого надо поднять ws и всё вокруг
Не хочется, хочется, чтобы данные сразу ушли себе и нигде не гуляли. Тем более, что трафик может быть солидный.

crutch_master ★★★★★
() автор топика
Последнее исправление: crutch_master (всего исправлений: 1)
Ответ на: комментарий от crutch_master

ну точно влезть в твою проблему я конечно не могу, но мышкой я в обозревателе «возюкал» и смотрел, что при этом попутно происходит в runtime-е - типа перехватывал фронтовые обращения к серверному API.

vinvlad ★★
()

Поднимаешь на локалхосте http-сервер и обращаешься к нему ajax-ом. Чтобы браузер не резал запросы наверно всякие cors надо настроить. Ну или прописать в hosts чтоб он как будто на том же домене 2 уровня был.

firkax ★★★★★
()
Ответ на: комментарий от crutch_master

Не знаю о чём ты, никаких локальных копий для этого не нужно. Сайт допустим www.example.com. В hosts прописываешь 127.0.0.1 local-api.example.com, поднимаешь сервер 127.0.0.1:8000 и обращаешься к нему как local-api.example.com:8000

Может быть можно и без домена.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 2)

Глянь:

https://pptr.dev/api/puppeteer.page.exposefunction

По сути, обратный канал связи из runtime обозревателя в локальную среду NodeJs. Можешь сначала в DOM-е страницы навесить свои собственные листинеры на всякие DOM-события, а из них при необходимости обращаться к ноде - типа, там какие-нибудь промисы завершать.

vinvlad ★★
()
Ответ на: комментарий от rtxtxtrx

DevTools Protocol …

Да я вроде посоветовал Puppeteer - это же обвязка вокруг DevTools-протокола. Работает все быстро, поскольку соединение с обозревателем устанавливается один раз при открытии новой вкладки, а дальше просто гоняются данные по соединению. API-шка есть, чтобы в дебри протокола не лезть… Но чем-то не нравится)

vinvlad ★★
()
Ответ на: комментарий от eternal_sorrow

Puppeteer is a Node.js library

Node.js

Мде…

И что дальше?)) Какая разница, на чем локальный клиент для взаимодействия с броузером писать? Наоборот, NodeJS - идеальный вариант.

vinvlad ★★
()
Последнее исправление: vinvlad (всего исправлений: 1)
Ответ на: комментарий от crutch_master

Врятли такое когда-нибудь будет, этож не сикурно. Даже во времена Java Apples такого не было, песочница не позволяла.

Хотя лет 15 назад для чего-то похожего в проекте где я работал использовался customprotocol://uri. Сервис отдавал линку с этим URI, подразумевая что у клиента установлено наше приложение. У пользователя запускалось нативное приложение, оно делало работу и отправляло результат серверу, а уже сервер передавал результаты на страницу клиенту.
Но это совершенно не то что тебе требуется.

Aber ★★★★★
()
Последнее исправление: Aber (всего исправлений: 1)
Ответ на: комментарий от crutch_master

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

eternal_sorrow ★★★★★
()
Последнее исправление: eternal_sorrow (всего исправлений: 1)