Почему я не получаю настроенные на мобильный телефон ответы при настройке агента пользователя с кукловодом? - PullRequest
0 голосов
/ 22 апреля 2019

Я пытаюсь добиться результатов, похожих на вкладку «Сеть» браузера Google Chrome. Меня интересуют размеры сайта.

Я написал код, используя nodejs и puppeteer, где я манипулирую заголовком userAgent. Я совершенно уверен, что заголовок настроен правильно, но вместо мобильной версии изображения с веб-сервера я продолжаю получать настольную версию. В качестве примера возьмем https: /www.nba.com/ При открытии выше веб-страницы с Google Chrome, как если бы он был просмотрен на устройстве iPhone, я получаю в качестве одного из ответов мобильную версию splash_screen.jpeg. При открытии того же сайта, как если бы он просматривался с компьютера, я получаю версию для компьютера splash_screen.jpg. Когда я устанавливаю точно такие же пользовательские агенты, как в запросах Google Chrome с кукловодом, нет разницы в ответах

Для настройки 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 && request.url().startsWith('data:')) {
        return;
      }

      // some extra stuff down here
    });

Я ожидаю, что мой вывод будет таким же, как во вкладке «Сеть» браузера Google Chrome. Есть ли способ добиться этого?

Заранее спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...