Быстрый ответ curl или Axios — обычно один ресурс. Puppeteer может также загружать скрипты, изображения, фреймы и API с нескольких хостов и ждать более позднего этапа страницы.

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

page.on("requestfailed", request => {
  console.log(request.url(), request.failure()?.errorText);
});

await page.goto(targetUrl, {
  waitUntil: "domcontentloaded",
  timeout: 30000,
});

Запустите это в асинхронном рабочем процессе с настоящим targetUrl. Пример ждёт DOMContentLoaded, который наступает раньше завершения каждого нужного изображения или более позднего ответа приложения. Сравните этот этап с тем, которого ждала исходная навигация: основной документ, DOM, load или затишье в сети — разные результаты.

Ответ 403 или 500 не является событием requestfailed. Читайте статус также через HTTPResponse.

Используйте наблюдения, чтобы выявить медленный или отклонённый ресурс, повторную аутентификацию или более позднее условие ожидания. Более длинный тайм-аут лишь продлевает ожидание; он не уменьшает работу браузера и не доказывает, что каждое соединение с ресурсом было принято.

Похожие статьи