ما ملف HAR وهل مشاركته آمنة؟
ملف HAR (HTTP Archive) هو سجل JSON تصدّره أدوات المطوّر في المتصفح من لوحة Network: كل طلب مع رابطه وطريقته وترويساته وملفات تعريف الارتباط وتوقيتاته وأحجامه، ومحتوى الاستجابة ما لم يُستبعد. يبيّن بدقة ما أرسله المتصفح وما استقبله، ولهذا تطلبه فرق الدعم — ولهذا أيضاً هو حساس: فملفات تعريف ارتباط الجلسة وترويسات Authorization والرموز المميزة تُسجَّل نصاً صريحاً، وملف تعريف ارتباط جلسة صالح قد يتيح لأحد أن يتصرف باسم المستخدم. احذفها أو أخفِها قبل أن يغادر ملف HAR يديك.
كيفية استخدام محلل ملفات HAR
- صدّر ملف HAR: افتح تبويب Network في أدوات المطوّر بالمتصفح، وفعّل Preserve log، وأعد تنفيذ المشكلة، ثم اختر Save all as HAR.
- اختر ملف .har (أو الصق نص JSON الخاص به) — فهو يبقى في متصفحك.
- عدّل حدّي الطلب البطيء والاستجابة الكبيرة إن لم تناسب القيمتان الافتراضيتان (1,000 ملّي ثانية و500 كيلوبايت) الصفحة.
- اضغط «تحليل» واقرأ جدول الفحوص أولاً: صفوف FAIL أخطاء وأسرار، وصفوف WARN ملاحظات أداء.
- قبل إرسال الملف إلى أي أحد، اختر إنشاء نسخة منقّحة، وشغّل التحليل مجدداً، وراجع النسخة وشاركها بدلاً من الأصل.
مزايا محلل ملفات HAR
- يقرأ ملفات HAR 1.2 المُصدَّرة من Chrome وEdge وFirefox وSafari، حتى 30 ميغابايت و20,000 طلب
- يسرد الطلبات التي لم تتلقَّ استجابة (محظورة أو ملغاة أو خطأ شبكة) وكل استجابة 4xx و5xx، مع نص الخطأ الذي سجّله المتصفح
- يجد الطلبات الأبطأ من الحد الذي تختاره ويسمّي المرحلة الأطول — انتظار الخادم (TTFB)، أو التنزيل، أو TLS، أو الاتصال، أو DNS، أو الانتظار في الطابور
- يعرض أكبر الاستجابات، وإعادات التوجيه وسلاسلها، والطلبات المتطابقة المكررة في الجلسة، والاستجابات النصية غير المضغوطة، وطلبات http:// من صفحة https://
- يجمّع الطلبات حسب المضيف (طرف أول أو طرف ثالث) وحسب نوع المورد، مع حجم البيانات المنقولة
- يسرد كل ملف تعريف ارتباط وترويسة اعتماد ورمز مميز ومعامل يبدو سرياً في الملف بقيمة مقنّعة، ويكتب ملف HAR منقّحاً تُستبدل فيه هذه القيم بـ [REDACTED]، مع خيار حذف المحتوى
مثال على محلل ملفات HAR
صفحة متجر تُحمَّل ببطء وتظهر فيها خانة «مقترحات» فارغة
الإدخال:
ملف HAR تجريبي (بيانات وهمية لموقع shop.example.com): 9 طلبات، الحد 1,000 ملّي ثانية / 500 كيلوبايت، نسخة منقّحة مع إبقاء المحتوىالنتيجة:
FAIL طلبات بلا استجابة: 1 (analytics.example.org — net::ERR_BLOCKED_BY_CLIENT) · FAIL أخطاء الخادم: 1 (POST /api/recommendations 503، 2.31 ث، الانتظار TTFB 2.30 ث) · WARN أخطاء العميل: 1 (hero.webp 404) · WARN طلبات بطيئة: 2 · WARN سلسلة إعادة توجيه: http://shop.example.com/ → https://shop.example.com/ → https://www.shop.example.com/ · WARN تكرار: GET /api/cart مرتين · FAIL أسرار: 5 (ملف تعريف ارتباط الجلسة، وترويسة Authorization، وaccess_token في الرابط) · النسخة المنقّحة: استُبدلت 7 قيممتى تستخدم محلل ملفات HAR
- قراءة ملف HAR أرفقه عميل بتذكرة دعم والعثور على الطلب الفاشل في ثوانٍ
- تفسير بطء صفحة بالدليل: أي طلب كان بطيئاً، وهل السبب الخادم أم التنزيل
- فحص تسجيل بحثاً عن سلاسل إعادة التوجيه واستدعاءات API المكررة والموارد غير المضغوطة أثناء اختبار الأداء
- إزالة ملفات تعريف ارتباط الجلسة والرموز المميزة من ملف HAR قبل إرفاقه بتقرير عيب أو إرساله إلى مورّد
الأسئلة الشائعة حول محلل ملفات HAR
ما هو ملف HAR؟
ملف HAR (HTTP Archive) سجلّ بصيغة JSON لكل طلب أرسله المتصفح بينما كان تبويب Network في أدوات المطوّر يسجّل: الروابط والطرق والترويسات وملفات تعريف الارتباط والتوقيتات والأحجام، ومحتوى الاستجابات ما لم تستبعده. تطلبه فرق الدعم لأنه يبيّن بدقة ما أرسله المتصفح وما استقبله.
كيف أصدّر ملف HAR؟
في Chrome أو Edge افتح أدوات المطوّر (F12)، واختر تبويب Network، وفعّل Preserve log، وأعد تنفيذ المشكلة، ثم انقر بزر الفأرة الأيمن على قائمة الطلبات واختر Save all as HAR (أو استخدم سهم التنزيل). في Firefox استخدم قائمة الترس في تبويب Network ← Save All As HAR؛ وفي Safari فعّل قائمة Develop واختر Export في تبويب Network.
هل مشاركة ملف HAR آمنة؟
ليس كما هو. فملف HAR يسجّل ملفات تعريف ارتباط الجلسة وترويسات Authorization ورموز الوصول وحقول النماذج مثل كلمات المرور نصاً صريحاً، ومن يحمل ملف تعريف ارتباط جلسة صالحاً قد يتمكن من التصرف باسمك. راجع قائمة «الأسرار المكتشفة»، وأنشئ نسخة منقّحة، وراجعها، ولا تشاركها إلا مع من يحتاجها.
ماذا تحذف النسخة المنقّحة؟
تستبدل بـ [REDACTED] قيمَ ترويسات الاعتماد (Authorization وCookie وSet-Cookie وترويسات مفاتيح API وCSRF)، وكل ملفات تعريف الارتباط، وحقول الاستعلام والنماذج وJSON التي تبدو أسماؤها سرية (token وpassword وsession وkey وcode…)، ورموز JWT وBearer في أي مكان من الملف. ويمكنها اختيارياً حذف كل محتوى الطلبات والاستجابات. الاكتشاف قائم على الأسماء والأنماط، فراجع النسخة قبل مشاركتها.
هل يُرفع ملف HAR الخاص بي؟
لا. يُقرأ الملف ويُحلَّل في متصفحك، ولا يُرسل شيء إلى متقن أو إلى أي جهة أخرى. نسخ النتائج لا يحتاج إلى حساب؛ أما تنزيل التقرير أو الملف المنقّح فيطلب منك تسجيل الدخول إلى حساب مجاني.
ملاحظات تقنية
تُحسب الأحجام من الحقل _transferSize في Chrome إن وُجد (البايتات المنقولة عبر الشبكة بعد الضغط)، وإلا فمن headersSize + bodySize؛ والقيم −1 في الملف تعني «غير معروف» وتُعدّ صفراً. والحجم بعد فك الضغط هو response.content.size. والطلب ذو الحالة 0 مع الحقل _error طلبٌ لم يُكمله المتصفح.
تُحدَّد المرحلة البطيئة من كائن timings: blocked وdns وconnect (وزمن TLS ssl جزء من connect ويُعرض منفصلاً) وsend وwait (الزمن حتى أول بايت) وreceive. طول wait يشير إلى الخادم أو اعتمادية خلفه، وطول receive يشير إلى حجم الاستجابة أو الاتصال.
تُعاد بناء سلاسل إعادة التوجيه من redirectURL في كل استجابة 3xx (أو ترويسة Location) بعد حلّه نسبةً إلى رابط الطلب. والطلبات المكررة هي الطريقة والرابط نفساهما أكثر من مرة؛ بعضها مقصود (استطلاع دوري أو إعادة محاولة)، لذلك تُعرض WARN لا FAIL.
تُكتشف الأسرار من أسماء الترويسات (Authorization وCookie وSet-Cookie وX-API-Key وترويسات CSRF وغيرها)، ومن أسماء المعاملات وحقول JSON التي تحوي token أو secret أو password أو session أو key أو code أو signature وما يشبهها، ومن أنماط JWT وBearer في الروابط والترويسات والمحتوى.
الحدود ومنهجية القياس
التحليل لا يتجاوز ما سُجّل: الطلبات التي سبقت بدء التسجيل، أو أخفاها مرشّح في تبويب Network، ليست في الملف.
التوقيتات من المتصفح الذي سجّل الملف وتعكس ذلك الجهاز وتلك الشبكة في تلك اللحظة؛ التسجيل الواحد عيّنة لا قياس معياري.
التنقيح قائم على الأسماء وأنماط الرموز. قد يبقى سرّ مخزّن باسم غير مألوف، أو رمز داخل صفحة HTML (حقل نموذج مخفي)، أو محتوى multipart أو XML، أو بيانات شخصية في محتوى استجابة — احذف المحتوى عند الشك، وراجع النسخة دائماً قبل مشاركتها.
تُجمَّع مضيفات الطرف الأول بحسب آخر مقطعين من الاسم (أو ثلاثة لأسماء مثل example.com.sa)؛ وهذه قاعدة تقريبية لا قائمة اللواحق العامة (Public Suffix List).
الأمان والخصوصية
يُقرأ ملف HAR بواجهة File API في المتصفح ويُحلَّل في هذه الصفحة؛ لا يرفعه متقن ولا يسجّله ولا يخزّنه أبداً.
تُعرض قيم الأسرار مقنّعة (أول حرفين وآخر حرفين والطول)، وتُستبدل قيم الاستعلام التي تبدو سرية في الروابط داخل الجداول والتقرير، فنسخ جدول لا ينسخ الأسرار.
ملف HAR الذي شاركته لا يمكن استرجاعه: إن أُرسل ملف غير منقّح، فسجّل الخروج من الجلسات المعنية أو غيّر الرموز التي احتواها.
المراجع
- What are browser developer tools? — MDNمقدمة لأدوات المطوّرين المدمجة في المتصفحات — المفتّش ووحدة تحكم JavaScript ومصحّح الأخطاء — لفحص الصفحة أثناء اختبارها.
- RFC 9110: HTTP Semanticsمعاني أساليب HTTP وحقول الترويسات ورموز الحالة والتفاوض على المحتوى، بغضّ النظر عن إصدار البروتوكول.
- OWASP Cheat Sheet Series: Session Managementإنتروبيا معرّف الجلسة وسمات ملف تعريف الارتباط والانتهاء والتجديد بعد تسجيل الدخول ومعالجة تسجيل الخروج.