Pisarev_OS
@Pisarev_OS

Как оптмимально сделать эмуляцию браузера (linux)?

Здравствуйте.
Есть сайт, на странице которого расположено 200 iframe'ов, которые тянутся с 200 разных доменов. Внутри каждого iframe'a - небольшая генерируемая лента новостей. Не спрашиваейте почему так много, почему iframe, и зачем всё это - но так надо, другой вариант тут не предусмотрен, только такой.
При открытии такой страницы просто в десктопном Хроме (win7x64, 32 ГБ ОЗУ, i5-3.5 GHz) полная прогрузка занимает около 1 минуты. Для удобства пусть так и будет - 60 секунд.
Всё это время, понятное дело, вся система подлагивает.
Основной момент - за сутки на эту страницу сейчас планируется отправлять через список прокси суммарно 5,000 посещений (неживых, понятно). И встал вопрос - как это лучше сделать в плане оптимальной производительности...

Сейчас обсуждаем вариант такой подачи посещаемости через эмуляцию в виртуальном браузере, с использованием прокси и юзерагентов. Будет написана на c++ с использованием официального движка браузера qt webengine и движка обработки js V8 на базе webengine.
Конфиг сервера:
CPU: Intel 2x Xeon E5-2630v3 - 16c/32t - 2.4GHz /3.2GHz
RAM: 128GB DDR4 ECC 1866 MHz


При этом, решили отказаться от iframe'ов на одном сайте, а просто обращаться к этим 200 отдальным сайтам по-отдельности - на страницу с новостной лентой.
При подсчетах прикинли, что таким образом программа передаст 1 посещение на все 200 сайтов примерно за 10 минут. Т.е. 144 посетителя за 24 часа, при 1-ом потоке. А надо 5,000 - т.е. 35 потоков.

И сам предмет спора: какой вариант оптимальнее вообще в такой ситуации можно придумать? Небудет ли при этих 35-потоках тормозить сам сервер в целом, хватит ли его мощностей. Или, может, проще вообще что-то сообразить в виде десктопного варианта с той же многопоточностью? Ведь если в один сайт подгружать те 200 фреймов, вместо того чтобы обращаться к ним в отдельности, уходит 60 секунд, то за сутки при одном потоке получается уже 1440 посещений, что в 10 раз больше. И для цели в 5,000 нужно будет всего 4 потока.

Был бы признателен, если бы кто подсказал, в каком направлении двигаться, на чем акцентировать.
Задача: донести 5,000 посетителей либо на каждый из 200 сайтов в отдельности на нужную страницу, либо же на один, но тогда те 200 нужно подключить к нему в ifram'ы.
  • Вопрос задан
  • 306 просмотров
Пригласить эксперта
Ответы на вопрос 2
@922j
PhantomJS, SlimerJS
Ответ написан
Комментировать
@alekssamos
Программист любитель
Либо использовать, как уже отвечали выше, Headless браузер, то есть браузер без пользовательского интерфейса,
либо я еще придумал, загружать не все фреймы сразу, а по мере видимости, ориентируясь на прокрутку (scroll), но это наверно не подойдет под текущую задачу.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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