кукловод при использовании безголовой ложной

#google-chrome-devtools #puppeteer #chromium

#google-chrome-devtools #кукловод #chromium

Вопрос:

У меня есть скрипт для анализа конкретной веб-страницы. Когда я устанавливаю безголовое false, кукловод не загружает страницу

  await page.goto('https://www.google.com', {
            waitUntil: 'load',
            // Remove the timeout
            timeout: 0
        });
  

Я пробовал с множеством конфигураций, таких как:

  const args = [
        '--no-sandbox',
        '--enable-logging',
        ' --v=1',
        '--disable-gpu',
        '--disable-extension',
        '--disable-setuid-sandbox',
        '--disable-infobars',
        '--window-position=0,0',
        '--ignore-certifcate-errors',
        '--ignore-certifcate-errors-spki-list',
        '--user-agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3312.0 Safari/537.36"'
    ];



    const options = {
        args,
        headless: false, // default is true
        userDataDir: "./user_data",
        defaultViewport: null,
        devtools: true,
        ignoreHTTPSErrors: true,
    };
  

Но скрипт останавливается await page.goto до истечения времени ожидания.

Ответ №1:

Насколько я понимаю, вы анализируете не google.com страницу. Первое, что следует учитывать, это waitUntil: 'load' . Что он сделал, он считает, что навигация завершена при запуске события загрузки.

Событие загрузки запускается, когда вся веб-страница (HTML) загружена полностью, включая все зависимые ресурсы, такие как файлы JavaScript, файлы CSS и изображения.

Существует большая вероятность того, что это событие не запускается в вашем случае по разумному тайм-ауту, поэтому я бы посоветовал не полагаться на это waitUntil , а использовать другое ожидание, например, наличие какого-либо селектора

 await page.goto('https://www.google.com');
await page.waitForSelector('[name="q"]');
  

Комментарии:

1. спасибо за ответ, у меня такая же проблема, страница не загружается

2. Вы имеете в виду, что в вашей среде даже await page.goto('https://www.google.com') сбой с ошибкой тайм-аута при навигации?

3. console.log(«0») ожидает страницу.goto(‘ google.com ‘ ) консоль.журнал («1») Я вижу только console.log («0»). Как я могу получить журнал?

4. Какие версии кукловода и chrome у вас есть? У вас действительно есть такая старая версия Chrome, которую вы указали в user-agent? Кроме того, можете ли вы сказать, что такое версия HeadlessChrome? Непосредственно console.log(await page.browser().version()); перед открытием страницы. Есть вероятность, что это может быть проблемой совместимости github.com/puppeteer/puppeteer/blob/main/docs/api.md

5. HeadlessChrome /86.0.4240.0