Кукольник не может перейти к URL (ERR_EMPTY_RESPONSE) - PullRequest
0 голосов
/ 12 декабря 2018

Проблема Это самый простой код, который вы можете написать, чтобы перейти на страницу, используя puppeteer:

const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();
  page.on('response', response => {console.log(response.request().url())});
  page.on('error', error => {console.error(error.message)});
  await page.goto('https://www.vueling.com/es');
  await browser.close();
})();

Но это приводит к ошибке:

UnhandledPromiseRejectionWarning: Error: net::ERR_EMPTY_RESPONSE at https://www.vueling.com/es

Вопрос

Эта страница прекрасно загружается, когда я пробую себя в Chrome / Chromium (~ 135 запросов в 5 ~ 7 "). Мой вопрос, это puppeteerДело в том, что вина Chrome или что-то еще мне не хватает? Почему это не работает?

Environment

  • Версия Puppeteer: 1.10.0
  • Версия платформы / ОС: macOS High Sierra 10.13.6
  • Версия Node.js: 10.13

1 Ответ

0 голосов
/ 12 декабря 2018

Некоторые веб-сайты могут обнаруживать кукловода, потому что у него есть определенный пользовательский агент: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/72.0.3617.0 Safari/537.36.Вы можете заметить Headless Chrome в этом.

Если вы переопределяете свой пользовательский агент: await page.setUserAgent("Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)"); перед загрузкой страницы обычным браузерным пользовательским агентом, он работает должным образом.

Если веб-сайт пытается обнаружить кукловода (существует множество других способов сделать это), это потому, что они не хотят, чтобы к их информации обращались автоматически.Поэтому, если вы запускаете его на веб-сайте, который вам не принадлежит, вы должны уважать его данные.

...