Кукольник всегда рассчитывает время на одном сайте - PullRequest
1 голос
/ 29 июня 2019

В настоящее время я использую Puppeteer для получения скриншотов с информацией об отслеживании, и это работает для 6 из 8 веб-сайтов, которые я использую, но для 2, кажется, время ожидания истекло.Когда я захожу на веб-сайты вручную и просматриваю сетевой трафик, то кажется, что у меня нет больших файлов или чего-либо, что должно занять более 300 секунд, чтобы его время истекло, но это так.Я также не знаю, как я должен решить эту проблему, так как я не могу видеть, что делает кукловод, пока он просто не сообщит мне, что истекло время ожидания.

Я считаю, что 2 веб-сайта - это одна и та же компания, поэтому на их сайте есть что-то, что предотвращает это, но я не совсем уверен, как они это делают.

Веб-сайты https://www.maersk.com/ & https://www.safmarine.com/

Код, которым я сейчас пользуюсь:

const puppeteer = require('puppeteer')

const browser = await puppeteer.launch();

const page = await browser.newPage();
await page.goto('https://www.maersk.com/'); //Or replace with https://www.safmarine.com/

console.log(await page.content());
await page.waitFor(5000)
await page.screenshot({path: 'screenshot.png'});

await browser.close();

Я не совсем уверен, почемуэто может происходить, поскольку веб-сайты кажутся обычными веб-сайтами, которые должны нормально загружаться в кукловодов.

1 Ответ

0 голосов
/ 30 июня 2019

Пользователь ниже кода, который работает нормально. Проверьте результат. enter image description here enter image description here

Установка пакетов NPM.

"npm i puppeteer-extra puppeteer-extra-plugin-stealth --save"

(async()=>{
    const puppeteer = require("puppeteer-extra");
    const pluginStealth = require("puppeteer-extra-plugin-stealth");
    await puppeteer.use(pluginStealth());
    await puppeteer.use(
        require("puppeteer-extra-plugin-anonymize-ua")({ makeWindows: true })
    )
    await puppeteer.use(require("puppeteer-extra-plugin-stealth")())
    const browser = await puppeteer.launch({
        args: ['--no-sandbox', '--disable-setuid-sandbox',
            '-disable-gpu', '--disable-infobars'
        ],
        slowMo: 100,
        ignoreHTTPSErrors: true
    })

    const page = await browser.newPage();
    await page.goto('https://www.safmarine.com/'); //Or replace with https://www.safmarine.com/

    console.log(await page.content());
    await page.waitFor(5000)
    await page.screenshot({path: 'screenshot2.png'});

    await browser.close();
})()
...