Удаленное управление браузером



  • Где-то вроде видел похожую тему, но сейчас посетила идея. Можно сделать удаленное управление браузером, что дополнит просто возможность управлять им, но это можно будет делать удаленно. Сейчас вот понадобилась такая функция, но нужно управлять браузером BAS через сайт-сервис. JS на сайте-сервисе мог бы подключаться через WebSocket к удаленному экземпляру BAS, и отрисовывать в Canvas скриншоты сайта из браузера BAS. Так же передавались бы все нажатия клавиш и мыши. Это вывело бы ботоводство на новый уровень)



  • @blackhacker да, такая фича в дополнение к ручному управлению была бы очень удобна и у нее есть большие перспективы


  • administrators

    @blackhacker Браузер БАС можно запускать как отдельным процесс и управлять им через апи. Что и делает основной процесс. Сегодня запишу видео, как это сделать.



  • было бы здорово! с нетерпением ждем видео :)


  • administrators

    Сделал библиотеку, которая позволяет управлять браузером без БАС через nodejs.
    Чтобы попробовать:

    1. Ставим ноду.
    2. Создаем новую папку, открываем там консоль.
    3. npm init -y
    4. npm install bas-browser-connector
    5. Создаем файл app.js c содержанием app.js
    6. Запускаем node app.js

    Скрипт сам скачает БАС, найдет в гугл слово "тест" и выдаст 10 первых ссылок.

    Немного про апи:

    //Создаем коннектор
    var BASBrowserConnector = require('bas-browser-connector')
    var BAS = new BASBrowserConnector()
    
    //Включаем лог по желанию
    BAS.LogToConsole()
    
    //Запускаю процесс
    //При первом запуске будет скачивание, может занять какое-то время.
    BAS.Start({Version:"20.1.0"},function(){
       //Процесс запущен
    })
    
    //Грузим страницу
    //Первый параметр - специальный xml, подробнее о нем можно узнать только изучив его парсер
    //https://github.com/bablosoft/BAS/blob/master/ChromeWorker/commandparser.cpp
    //Второй параметр, какой ответ ожидается от браузера.
    BAS.Write("<Load>google.com</Load>", "<Load>", function(data){
        //Страница загружена
        //В data ответ от браузера.
    })
    
    //Останавливаем процесс
    BAS.Stop({}, function(){
        //Процесс остановлен
    })
    

    Поддерживается многопоточность, можно создать несколько экземпляров BASBrowserConnector и использовать их параллельно.

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



  • здорово!
    если еще можно будет по факту нативным браузером так управлять (вопрос лишь в доступных флагах) то будет супер-пупер, программерам проще код писать :)))

    попробую найти время что бы понять Ваш коннектор и можно ли его на чем-то кроме ноды сделать:) а то я уж утилку на GO уже написал, которая по pub-sub мессаджи с центральной админки получает, меняет конфиги БАСа и рестартит его. Только так могу удаленно управлять процессом.



  • @Sevenup Для нативных браузеров попробуйте Selenium


Log in to reply
 

Looks like your connection to Bablosoft was lost, please wait while we try to reconnect.