Как прописать запрет замораживать вкладки в расширении для Google Chrome?
Занимаюсь разработкой парсеров и браузерных ботов на JavaScript. Свои продукты, как правило, оформляю в виде расширения для браузера Google Chrome. В связи с чем у меня назрел важный для меня вопрос.
Нельзя ли как-нибудь прописать в расширении запрет замораживать вкладки (сайты) на которых был загружен контент-скрипт? Не предоставляет ли случайно API расширений подобный функционал? Может быть в манифесте можно такой запрет прописать? Или может мне открывать сайты внутри фоновой страницы, а затем там выполнять необходимые действия? Слышал, что фоновая страница обычно активна всегда, не знаю так ли.
Любые ваши советы, идеи или предположения. Конечная цель у меня это иметь возможность свернуть окно с ботом и быть уверенным в том, что Chrome не заморозит процессы в этом окне, тем самым прибив бота.
Как это сделать? Я знаю, что в хроме, как и в других браузерах, можно создавать профили, которые по факту как отдельные браузеры идут. Однако, как можно запретить замораживать вкладки? Быть может существует параметр запуска позволяющий это? К сожалению, не знаю, что гуглить.
Так как у вас боты, выбросьте готовые тяжелые браузеры и напишите свой на базе вебкит, это 10-15 строчек плюс пара на запуск вашего бота. В своем приложении вы можете создавать сколько угодно одновременно работающих фреймов, мультитредово, любых размеров и т.п.
Недостаток - чистый вебкит и хромиум (с поддержкой гугла, точно помню они принципиально отказывались комитить gpu код ускорения проигрывания видео в него) - тормоза с проигрыванием видео (потому что декодирование на чистом cpu), но не думаю что боты у вас смотрят его из браузера.
p.s. в .net от майкрософта компонента WebBrowser работает на базе Internet Explorer, тоже без проблем, на mono оно работает на базе mozilla firefox
Если бы я знал как это делать) Все порываюсь освоить тот же Электрон, но всё некогда. Если у вас есть на примете русскоязычные мануалы, где описывается использование вебкита, то буду крайне признателен за ссылки.
zkrvndm, с электроном на самом деле не должно быть никаких проблем. Это я бы сказал проще даже чем плагин делать. Просто запустите ваш плагин/сервер/бот через стандартный create-electron-app и все. Дальше можете собрать в виде приложения, но это уже ради искусства
Шохрух Шаймардонов, вот уж не сказал бы, читал я гайды по электрону - плагины проще)
Впрочем, возможно я все же не прав, пока своими руками не пощупаю, не пойму как оно на деле.
На java берешь классы WebEngine и WebView, готовых примеров тьма
В .net кидаешь на форму контрол webbrowser и в коде 1 строчкой указываешь ссылку, по которой пойти, на onload к документу (в студии даже доки читать не приходится, все делает автозаполнение) вешаешь метод и делаешь там что хочешь (лучше инжектить javascript на форму и уже им делать что хочешь)
Вероятно речь о chrome://flags/#proactive-tab-freeze-and-discard
Выше уже посоветовали использовать этот флаг и в теории это действительно решает мою проблему. На неделе допиливаю бота автоответчика для ВКонтакте - обязательно протестирую этот флаг.
А в чём проблема использовать nightmare или Puppeteer?
Доки у них хорошие, да и API не сложное, можно спокойно как и использовать их функционал, так и по просту запускать с инжектами.