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

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

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


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

Может кто-то знает этот сорт магии?
  • Вопрос задан
  • 662 просмотра
Решения вопроса 1
Snowindy
@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 подключаться к раб столу
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы