curl이나 Axios의 빠른 응답은 보통 하나의 리소스입니다. Puppeteer는 여러 호스트의 스크립트, 이미지, 프레임, API도 가져오고 더 늦은 페이지 마일스톤을 기다릴 수 있습니다.

프록시가 기존 페이지에 이미 구성되어 있으므로 탐색 중 개별 실패를 관찰하십시오:

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

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

실제 targetUrl로 async 워크플로에서 실행하십시오. 예제는 DOMContentLoaded를 기다리는데, 이는 필요한 모든 이미지나 이후 애플리케이션 응답이 완료되기보다 이릅니다. 그 마일스톤을 원래 탐색이 기다리던 것과 비교하십시오: 메인 문서, DOM, load, 네트워크 정지는 서로 다른 결과입니다.

403 또는 500 응답은 requestfailed 이벤트가 아닙니다. HTTPResponse으로도 상태를 읽으십시오.

관찰 결과로 느리거나 거부된 리소스, 반복되는 인증, 더 늦은 대기 조건을 식별하십시오. 타임아웃을 늘리면 대기만 길어질 뿐 브라우저의 작업을 줄이지도, 모든 리소스 연결이 수락되었음을 증명하지도 않습니다.

관련 글