Как заставить браузер на удаленном сервере вести себя ‘как обычно’ при отключенной сессии?



@Snowindy

Занимаюсь задачей парсинга данных с веб-сайта, у которого нет API. Сайт построен полностью на асинхронном JS.

Что я придумал:

  • Создал tampermonkey скрипт, подключил к этому сайту, использую Chrome
  • Внутри скрипта происходит нажатие на несколько кнопок, скроллинг, открытие ленты постов, получение содержимого постов, и отправка куда следует
  • Все это крутится на Windows на удаленном сервере, куда я хожу через Google remotedesktop, или RDP Windows.

Суть проблемы:
Когда я подключен к удаленному рабочему столу, все работает прекрасно. Далее я оставляю вкладку браузера самой активной и закрываю удаленное подключение. Далее видно, что сайт как-то понимает, что на браузер «никто не смотрит», и поэтому подгрузка постов и скроллинг — не работает. Показывается что-то типа загрузочная заготовка поста, а не сам пост.
Когда я пользовался RDP, сессия как-то довольно грубо завершалась. Поэтому я перешел на remotedesktop гугла, он точно ничего не завершает: ощущается так, будто система не в курсе, что пользователь отключен от удаленной сессии. Однако, похоже и это не помогает..

Может кто-то знает этот сорт магии?


Решения вопроса 1



@Snowindy Автор вопроса

В итоге удалось решить очень интересным способом.

Соединяюсь с сервером через https://remotedesktop.google.com/, и там оставляю браузер с открытой вкладкой, а также открываю Chrome Dev Tools в отдельном окне для этой вкладке. Судя по всему, это особый режим хрома, чтобы он не гасил вкладку в режиме отладки.


Ответы на вопрос 2



@rPman

Отключаяя сессию rdp для машины это сигнал блокировки экрана, браузер это отлавливает и тормозит обработку скриптов (точно так же как и при минимизации окна/смены таба)

Полагаю headless версии браузера тебе не подходят? те что selenium к примеру запускают?

Решения:
— универсально, рекомендую — рекурсивный rdp, сессия, где запущен браузер должна быть открыта в другой сессии (другой пользователь, и не обязательно с этой же машины, но нет смысла заводить вторую машину), вот уже к этой второй сессии можно подключаться удаленно, при ее отключении открытое окно сессии mstsc к браузеру не будет передавать сигнал о дисконнекте, ее даже можно безопасно минимизировать (не проверял)
— запускать браузер не в rdp сессии а в консоли сервера (это та что подключена к монитору), используя vnc/teamviewer/anydesk и аналоги
к сожалению на серверах ее может не быть или она недоступна, к тому же она только одна на машине.
— виртуализация, установи виртуальную машину, где запускай хоть десктопные версии windows (это легально только с pro/ultimate версиями), каждый браузер будет запущен в своей сессии-консоли, доступ по rpd средствами виртуальной машины
— смени операционную систему на linux, тебе ведь только браузер запускать, там с помощью xserver-xvfb можно запускать любое количество серверов xserver, подключаться к ним по vnc (есть врапперы rdp), это будет проще и дешевле в обслуживании



@Drno

Никакой магии. Ты как юзер вышел — rdp «заморозился»….по крайней мере не серверные функции

можешь использовать VNC — он подключится типо к «монитору» и всё будет работать.
можешь использовать виртуалку на линукс….
впринципе можно и сервак на линукс использовать, ток рабочий стол ему поставить и так же по VNC подключаться к раб столу

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *