Почему я не получаю откорректированных с мобильных устройств ответов при настройке UserAgent с помощью puppeteer?

#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