A fast curl or Axios response is usually one resource. Puppeteer can also fetch scripts, images, frames and APIs across several hosts, and wait for a later page milestone.

With the proxy already configured on the existing page, observe individual failures during navigation:

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

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

Run this in the async workflow with the real targetUrl. The example waits for DOMContentLoaded, which is earlier than completion of every required image or later application response. Compare that milestone with the one the original navigation waited for: main document, DOM, load or network inactivity are different outcomes.

A 403 or 500 response is not a requestfailed event. Read status through HTTPResponse too.

Use the observations to identify a slow or denied resource, repeated authentication or a later wait condition. A longer timeout only extends the wait; it neither reduces the browser's work nor establishes that every resource connection was accepted.

འབྲེལ་བའི་རྩོམ་ཡིག