رد سريع من 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.

استخدم الملاحظات لتحديد مورد بطيء أو مرفوض، أو مصادقة متكررة، أو شرط انتظار لاحق. المهلة الأطول تمد الانتظار فقط؛ فهي لا تقلّل عمل المتصفح ولا تثبت أن كل اتصال مورد قد قُبل.

مقالات ذات صلة