Задать вопрос
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'ы.
  • Вопрос задан
  • 344 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 2
@922j
PhantomJS, SlimerJS
Ответ написан
Комментировать
@alekssamos
Программист любитель
Либо использовать, как уже отвечали выше, Headless браузер, то есть браузер без пользовательского интерфейса,
либо я еще придумал, загружать не все фреймы сразу, а по мере видимости, ориентируясь на прокрутку (scroll), но это наверно не подойдет под текущую задачу.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы