#node.js #puppeteer
#node.js #puppeteer
Вопрос:
Я пытаюсь добиться тех же результатов, что и на вкладке Сети браузера Google Chrome. Меня интересуют размеры веб-сайта.
Я написал некоторый код, используя nodejs и puppeteer, где я манипулирую заголовком UserAgent. Я совершенно уверен, что заголовок задан правильно, но вместо мобильной версии изображения с веб-сервера я продолжаю получать настольную версию. В качестве примера возьмем https:/www.nba.com / При открытии вышеуказанной веб-страницы с помощью Google Chrome, как если бы она была просмотрена устройством iPhone, я получаю в качестве одного из ответов мобильную версию splash_screen.jpeg . При открытии того же веб-сайта, как если бы он просматривался с ПК, я получаю версию для ПК splash_screen.jpg . Когда я устанавливаю точно такие же UserAgents, как в запросах Google Chrome с помощью puppeteer, нет никакой разницы в ответах
Для настройки UserAgent я делаю:
if (process.argv[4] == 'mobile') {
await page.setUserAgent('Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1');
} else {
await page.setUserAgent('Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Mobile Safari/537.36');
}
Чтобы манипулировать ответом, я делаю:
page._client.on('Network.dataReceived', (event) => {
const request = page._networkManager._requestIdToRequest.get(
event.requestId
);
if (request amp;amp; request.url().startsWith('data:')) {
return;
}
// some extra stuff down here
});
Я ожидаю, что мой вывод будет таким же, как на вкладке Сеть браузера Google Chrome. Есть ли какой-либо способ добиться этого?
Заранее спасибо.
Комментарии:
1. Вероятно, вы хотите установить окно просмотра , а не (или, а также) пользовательский агент, чтобы видеть «мобильную» версию сайта.
2. Вау, оказывается, это действительно работает 🙂 Я дополнительно установил для свойства isMobile значение true. Спасибо за вашу помощь @nahanil