في هذا الدرس 10تصفّح المواضيع
تعرّفنا في الدرس السابق على البنية المعمارية لرسائل بروتوكول HTTP من سطر البداية ورؤوس الرسالة والسطر الفارغ الفاصل وصولاً إلى جسم الرسالة. غير أن فهم القواعد النظرية وحده لا يكفي في بيئة العمل الحقيقية؛ فالمتصفح يخفي هذه الرسائل خلف واجهة رسومية أنيقة. وحتى تتمكن من تشخيص سبب فشل طلب معين، أو تأخر تحميل مورد، أو حدوث إعادة توجيه خاطئة، لا بد أن تتقن مهارة معاينة رسائل HTTP الحية عملياً أثناء انتقالها الفعلي بين العميل والخادم باستخدام لوحة الشبكة في أدوات المطور () وأداة سطر الأوامر cURL.
قبل الغوص في التفاصيل الهندسية، استعرض جدول المصطلحات التقنية الأساسية لهذا الدرس:
| المصطلح بالعربية | المصطلح بالإنجليزية | النطق التقني | المعنى الهندسي المبسط |
|---|---|---|---|
| لوحة الشبكة | نيتوورك بانل | أداة مدمجة داخل متصفح الويب تسجل وتعرض كل طلب HTTP واستجابته وتوقيته الزمني لحظة بلحظة. | |
| مخطط الشلال الزمني | ووترفول تايم لاين | تمثيل بصري يوضح المراحل الزمنية لكل طلب من فحص DNS والاتصال حتى استلام آخر بايت من الاستجابة. | |
| حفظ السجل عند التنقل | بريزيرف لوج | خيار في لوحة الشبكة يمنع مسح قائمة الطلبات المسجلة عند الانتقال لصفحة جديدة أو حدوث إعادة توجيه. | |
| أداة نقل الروابط الطرفية | كيرل | أداة سطر أوامر قياسية تتيح إرسال طلبات HTTP مخصصة ومعاينة الرؤوس والردود النصية الخام مباشرة. | |
| نسخ الطلب كأمر cURL | كوبي آز كيرل | ميزة في لوحة الشبكة تنسخ طلب المتصفح بكامل رؤوسه وبياناته على هيئة أمر جاهز للتشغيل في الطرفية. | |
| أرشيف HTTP المسجل | إتش إيه آر | ملف بصيغة JSON يحفظ نسخة كاملة من جميع طلبات واستجابات جلسة الشبكة لمشاركتها وتحليلها. |
عندما يتعذر تحميل قائمة بيانات في صفحة ويب أو يتوقف نموذج تسجيل الدخول عن العمل دون رسالة واضحة، فإن التخمين بالنظر إلى واجهة الصفحة نادراً ما يكشف السبب الحقيقي. تمنحك معاينة حركة HTTP الحية أدلة هندسية قاطعة عبر أربعة جوانب رئيسية:
- 1. التحقق مما أرسله العميل فعلياً: التأكد من طريقة الطلب ( أو )، والمسار الدقيق للرابط، والمعلمات المرسلة، ورؤوس الطلب التي أضافها المتصفح.
- 2. قراءة حكم الخادم الصريح: معرفة رمز الحالة الفعلي (مثل أو أو أو ) وفحص محتوى الاستجابة الخام قبل أن تعالجه واجهة الصفحة.
- 3. مراجعة التخزين المؤقت وضوابط الأمان: معرفة ما إذا كان الملف قد جُلب من الشبكة أم من الذاكرة المحلية، وفحص رؤوس الأمان والكوكيز مثل .
- 4. تشخيص اختناقات الأداء والبطء: قياس الزمن المستغرق بالملي ثانية في انتظار أول بايت من الخادم () مقارنة بزمن تنزيل الملفات الكبيرة.
يأتي كل متصفح ويب حديث على الحاسوب—سواء كان Google Chrome أو Microsoft Edge أو Mozilla Firefox أو Apple Safari—مزوداً بحزمة مدمجة من أدوات المطورين (). وداخل هذه الحزمة تمثّل لوحة الشبكة () الصندوق الأسود الذي يسجل كل حركة اتصال لحظة بلحظة.
يمكنك فتح لوحة الشبكة في أي صفحة ويب عبر إحدى الطرق القياسية الآتية:
- اختصار لوحة المفاتيح (في أنظمة Windows وLinux): اضغط على مفتاح أو الاختصار ، ثم انتقل إلى تبويب Network في الشريط العلوي.
- اختصار لوحة المفاتيح (في نظام macOS): اضغط على الاختصار ثم اختر تبويب Network.
- القائمة السياقية للفأرة: انقر بزر الفأرة الأيمن في أي مكان داخل الصفحة، واختر فحص ()، ثم انتقل إلى تبويب Network.
بمجرد تحديث الصفحة ولوحة الشبكة مفتوحة، يظهر كل مورد يطلبه المتصفح في سطر مستقل مرتب زمنياً داخل جدول الطلبات () مع شريط ملخص إحصائي في أسفل اللوحة:
- الاسم (): اسم الملف أو المسار المطلوب (مثل أو أو )، ويكون مستند الرئيسي دائماً هو السطر الأول في الأعلى.
- طريقة الطلب (): الفعل المستخدم في الطلب مثل أو (وإذا لم يكن العمود ظاهراً، انقر بزر الفأرة الأيمن على شريط عناوين الأعمدة وفعّل خيار Method).
- رمز الحالة (): كود استجابة الخادم مثل أو أو ، وتظهر الأخطاء باللون الأحمر لسهولة اكتشافها.
- النوع (): تصنيف المورد بناءً على حقل الرأس مثل مستند () أو تنسيق () أو طلب خلفية ().
- المُسبِّب (): يوضح الجهة التي أطلقت الطلب؛ هل هو محلل الصفحة () أثناء قراءة وسم صورة، أم سطر برمجي محدد.
- الحجم (): يعرض حجم البايتات المضغوطة المنقولة فعلياً عبر الشبكة وحجم الملف الأصلي بعد فك الضغط، أو يوضح أنه جُلب من الذاكرة المحلية ().
- الزمن ومخطط الشلال (): المدة الكلية للطلب بالملي ثانية، مع شريط بصري يفصّل مراحل الاتصال وانتظار أول بايت () وتنزيل المحتوى.
تأمل المخطط التوضيحي الآتي الذي يشرح أعمدة جدول الطلبات في لوحة الشبكة وشريط الملخص السفلي:
يضم الشريط العلوي من لوحة الشبكة أربعة مفاتيح تحكم رئيسية تضبط طريقة التقاط الرسائل أثناء الفحص والتجريب:
- 1. زر التسجيل () وزر المسح (): طالما كانت الدائرة حمراء مضيئة فالمتصفح يسجل كل طلب جديد. أما زر المسح فينظف الجدول الحالي تماماً لتتمكن من مراقبة طلب واحد فقط عند النقر على زر معين في الصفحة دون ازدحام.
- 2. خيار الاحتفاظ بالسجل (): يمسح المتصفح جدول الشبكة تلقائياً عند الانتقال إلى صفحة أخرى أو حدوث إعادة توجيه (). عند تفعيل مربع Preserve log يحتفظ الجدول بجميع الطلبات السابقة عبر تنقلات الصفحات المتتالية، وهو خيار لا غنى عنه عند فحص عمليات تسجيل الدخول وإعادة التوجيه.
- 3. خيار تعطيل الذاكرة المؤقتة (): يُجبر المتصفح (أثناء بقاء أداة المطور مفتوحة فقط) على تجاهل النسخ المخزنة محلياً وطلب كل ملف من الخادم مباشرة كزائر جديد تماماً.
- 4. محاكاة سرعة الاتصال (): قائمة منسدلة تتيح لك محاكاة شبكات الهواتف البطيئة ( أو ) أو انقطاع الإنترنت () لاختبار كفاءة تحميل الموقع في ظروف الاتصال الضعيفة.
عند النقر على أي طلب داخل جدول الشبكة، تفتح لوحة جانبية تفصيلية تضم ستة تبويبات فرعية تكشف كل جزء من أجزاء رحلة الرسالة:
- 1. تبويب الرؤوس (): يعرض ثلاثة أقسام منظمة: ملخص عام ( يضم الرابط وطريقة الطلب ورمز الحالة وعنوان للخادم)، ورؤوس الاستجابة ()، ورؤوس الطلب ().
- 2. تبويب الحمولة المرسلة (): يعرض البيانات التي أرسلها العميل إلى الخادم، سواء كانت معلمات استعلام في الرابط () أو بيانات داخل جسم الطلب ().
- 3. تبويب المعاينة المنسقة (): يعرض جسم استجابة الخادم بصورة مرئية منسقة ويسيرة القراءة، مثل عرض كائنات كشجرة قابلة للطي أو عرض الصور المصغرة.
- 4. تبويب الاستجابة الخام (): يعرض النص الخام الفعلي لجسم الاستجابة كما وصل من الخادم حرفياً دون تجميل.
- 5. تبويب المُسبِّب (): يعرض التسلسل الكامل للنداءات البرمجية التي أدت إلى إرسال هذا الطلب.
- 6. تبويبا التوقيت والكوكيز (): يفصّل تبويب كل جزء من الثانية في رحلة الاتصال (فحص ، مصافحة ، زمن انتظار أول بايت ، وزمن التنزيل)، بينما يعرض تبويب القيم المرسلة والمستلمة في جدول واضح.
جرّب المحاكي التفاعلي الآتي لاستكشاف التبويبات الفرعية لفحص طلب HTTP حقيقي داخل أدوات المطور:
قد يطلق فتح صفحة ويب حديثة واحدة ما بين 80 إلى 200 طلب HTTP منفصل لجلب الخطوط والأيقونات وملفات التنسيق وطلبات الخلفية. وللوصول الفوري إلى الطلب الذي تبحث عنه دون ضياع وسط مئات الأسطر، توفر لوحة الشبكة نظام فلترة مزدوجاً فائق الدقة:
- 1. أزرار التصنيف السريع حسب نوع المورد: يمكنك النقر على أزرار الفلترة الجاهزة في أعلى الجدول لعزل فئة محددة:
- : يعرض طلبات مستندات الأساسية فقط.
- : يعزل طلبات البيانات الخلفية () فقط، وهو الفلتر الأكثر استخداماً عند فحص التطبيقات التفاعلية.
- و و و: لعزل ملفات التنسيق أو السكربتات أو الصور أو الخطوط.
- 2. معاملات الفلترة المتقدمة في مربع : يمكنك كتابة تعبيرات بحث ذكية داخل خانة الفلترة لاقتناص طلبات محددة بدقة كما في الأمثلة القياسية الآتية:
status-code:404
method:POST
domain:api.closetag.com
mime-type:application/json
larger-than:100k
has-response-header:Set-Cookie
-method:OPTIONS
يخلط كثير من المتعلمين بين خانة الفلترة () وبين نافذة البحث الشامل في الشبكة ()، والفرق الهندسي بينهما جوهري:
- خانة الفلترة (): تبحث في أسماء الملفات وعناوين الروابط الظاهرة في الجدول أو عبر معاملات الفلترة فقط، ولا تفتش داخل نصوص الاستجابات.
- نافذة البحث الشامل ( عبر أيقونة العدسة المكبرة أو الضغط على داخل لوحة الشبكة): تفتش داخل المحتوى الكامل لجميع رسائل HTTP المسجلة، بما في ذلك أسماء وقيم حقول الرأس، ونصوص أجسام الاستجابة ( و و).
فعلى سبيل المثال، إذا ظهرت أمامك في الصفحة قيمة معينة مثل رقم طلب وأردت معرفة أي طلب من بين عشرات الطلبات هو الذي جلب هذه القيمة من الخادم، فما عليك سوى فتح نافذة البحث الشامل وكتابة ليرشدك المتصفح فوراً إلى الطلب المسؤول والسطر المطابق بداخله.
إلى جانب أدوات المطور الرسومية في المتصفح، يحتاج المهندس دائماً إلى أداة سطر أوامر سريعة ومباشرة لمعاينة رسائل HTTP بمعزل عن إضافات المتصفح وذاكرته المؤقتة. هذه الأداة القياسية العالمية هي cURL ()، وهي مثبتة مسبقاً في أنظمة Windows 10/11 وmacOS وLinux.
تمنحك أربعة خيارات أساسية في أداة تحكماً كاملاً في معاينة الرسائل النصية الخام:
- الخيار (جلب الرؤوس فقط): يرسل طلب ويعرض سطر حالة الاستجابة وحقول الرأس فقط دون تنزيل جسم الصفحة.
- الخيار (عرض رؤوس الاستجابة مع الجسم): يرسل طلب كامل ويعرض رؤوس الاستجابة متبوعة بجسم الرسالة معاً.
- الخيار (الفحص التفصيلي الكامل ): يعرض تفاصيل الاتصال ()، وكل سطر يرسله العميل مسبوقاً بالعلامة ، وكل سطر يستقبله من الخادم مسبوقاً بالعلامة .
- الخيار (تتبع إعادة التوجيه): يوجه الأداة لتتبع رؤوس تلقائياً عند استلام رموز إعادة التوجيه () حتى الوصول للوجهة النهائية.
لاحظ في المثال الآتي كيف يكشف الأمر أسطر الطلب الصادرة () وأسطر الاستجابة الواردة () بوضوح تام:
curl -v https://www.closetag.com/tutorials
* Connected to www.closetag.com (203.0.113.10) port 443
> GET /tutorials HTTP/1.1
> Host: www.closetag.com
> User-Agent: curl/8.7.1
> Accept: */*
>
< HTTP/1.1 200 OK
< Content-Type: text/html; charset=UTF-8
< Cache-Control: no-cache, private
من أقوى المهارات العملية التي تجمع بين دقة المتصفح ومرونة سطر الأوامر ميزة نسخ الطلب كأمر cURL ().
فعندما تنقر بزر الفأرة الأيمن على أي طلب داخل جدول الشبكة في أدوات المطور وتختار ، يقوم المتصفح بتوليد أمر جاهز يتضمن الرابط الكامل، وطريقة الطلب، وجميع حقول الرأس التي أرسلها المتصفح، وحمولة البيانات، لتتمكن من إعادة تشغيل الطلب نفسه في الطرفية أو تعديل أحد رؤوسه لتجربته:
curl 'https://api.closetag.com/v1/courses?track=http' \
-H 'Accept: application/json' \
-H 'Accept-Language: ar,en-US;q=0.9' \
-H 'Referer: https://www.closetag.com/' \
-H 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)'
عندما تتعاون مع زميلك في الفريق لتشخيص مشكلة معقدة في الشبكة، يمكنك تصدير سجل الجلسة بالكامل في ملف قياسي يُسمى ملف أرشيف HTTP () عبر النقر على أيقونة التصدير () في شريط لوحة الشبكة. يُحفظ هذا الملف بصيغة منظمة تحتوي على كل طلب واستجابة ورأس وتوقيت زمني تم تسجيله.
غير أن التعامل مع ملفات HAR وأوامر Copy as cURL يتطلب وعياً أمنياً صارماً للغاية:
- احتواء السجل على بيانات الجلسة الحية: يتضمن ملف الخام أو أمر المنسوخ في كثير من الأحيان كوكيز الجلسة الفعالة ( و)، ورموز المصادقة ()، وأي بيانات أُرسلت داخل جسم الطلب.
- خطر انتحال الجلسة (): أي شخص يحصل على ملف غير مُطهَّر أو أمر يحتوي على رمز جلستك الفعال يستطيع إعادة إرسال الطلب نفسه وانتحال حسابك المسجل فوراً.
- قاعدة التطهير الإلزامية قبل المشاركة: قبل مشاركة أي أمر أو ملف في تذكرة دعم فني أو منتدى برمجي، احذف دائماً قيم حقول و ومفاتيح API السرية واستبدلها بقيم وهمية مثل .
ملخص الدرس
حصاد الدرسمراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي
ماذا تعلّمت في هذا الدرس؟
تعلّمنا في هذا الدرس كيف نعاين حركة رسائل HTTP الحية عملياً باستخدام لوحة الشبكة في أدوات المطور، وكيف نقرأ أعمدة جدول الطلبات ومخطط الشلال الزمني، ونتحكم في التسجيل عبر و، ونفحص التبويبات التفصيلية للطلب والاستجابة، ونستخدم الفلاتر والبحث الشامل، ونفحص الرسائل الخام عبر أداة وميزة ، مع تأمين وتطهير ملفات . الخطوة التالية: انتقل الآن إلى الدرس التالي طلب HTTP () لنغوص في التشريح التفصيلي لرسالة الطلب التي يرسلها العميل إلى الخادم!
سجّل الدخول لحفظ تقدمك
تابع إنجاز المواضيع والمصطلحات والمهام، وكمّل من آخر خطوة على أي جهاز.
المصطلحات12
راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.
- 01 DevTools Network Panel لوحة الشبكة في أدوات المطور
- الأداة المدمجة في المتصفح لتسجيل وعرض جميع طلبات واستجابات HTTP وحقول الرأس والتوقيت الزمني لحظة بلحظة.
- للمراجعة
- 02 Requests Table جدول الطلبات في الشبكة
- الجدول الزمني في لوحة الشبكة الذي يعرض كل مورد مطلوب مع اسمه وطريقة طلبه ورمز حالته ونوعه وحجمه ومدته.
- للمراجعة
- 03 Waterfall Timeline مخطط الشلال الزمني
- تمثيل بصري متدرج يوضح متى بدأ كل طلب وكيف توزعت مدته الزمنية بين الاتصال وانتظار الخادم وتنزيل المحتوى.
- للمراجعة
- 04 Preserve Log الاحتفاظ بالسجل (Preserve Log)
- خيار في لوحة الشبكة يمنع مسح الطلبات المسجلة عند تحديث الصفحة أو الانتقال عبر سلسلة إعادة توجيه.
- للمراجعة
- 05 Disable Cache تعطيل الذاكرة المؤقتة (Disable Cache)
- خيار في لوحة الشبكة يتجاوز الذاكرة المخبأة محلياً أثناء فتح أداة الفحص لضمان جلب أحدث نسخة من الخادم مباشرة.
- للمراجعة
- 06 Network Throttling محاكاة سرعة الشبكة (Throttling)
- ميزة في لوحة الشبكة تحاكي سرعات الإنترنت البطيئة أو انقطاع الاتصال لاختبار أداء الموقع في ظروف الشبكات الحقيقية.
- للمراجعة
- 07 Time to First Byte (TTFB) زمن الوصول لأول بايت (TTFB)
- المدة الزمنية الفاصلة بين إرسال طلب HTTP واستلام أول بايت من استجابة الخادم، وتعكس سرعة معالجة الخادم وجودة الشبكة.
- للمراجعة
- 08 Initiator مُسبِّب الطلب (Initiator)
- العمود والتبويب الذي يحدد الجهة التي أطلقت الطلب، سواء كان محلل HTML أو دالة برمجية محددة.
- للمراجعة
- 09 cURL (Client for URLs) أداة سطر الأوامر cURL
- أداة قياسية تعمل من سطر الأوامر لإرسال طلبات HTTP مخصصة ومعاينة الرؤوس والاستجابات النصية الخام.
- للمراجعة
- 10 Verbose Mode (curl -v) الوضع التفصيلي (curl -v)
- خيار في أداة cURL يعرض تفاصيل الاتصال وأسطر الطلب الصادرة (>) وأسطر الاستجابة الواردة (<) كاملة.
- للمراجعة
- 11 Copy as cURL نسخ الطلب كأمر cURL
- ميزة في لوحة الشبكة تنسخ أي طلب مسجل بكامل رؤوسه ومعلماته على هيئة أمر cURL جاهز للتشغيل في الطرفية.
- للمراجعة
- 12 HTTP Archive (.har) ملف أرشيف الشبكة (HAR)
- صيغة ملف قياسية مبنية على JSON تُستخدم لتصدير ومشاركة سجل كامل لطلبات واستجابات جلسة الشبكة.
- للمراجعة
لا توجد بطاقات تطابق البحث والتصفية.
اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.
الاختصارات5
راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.
- 01 DevTools DevTools
- Browser Developer Tools
- حزمة أدوات المطورين المدمجة في المتصفح لفحص عناصر الصفحة ومعاينة حركة رسائل الشبكة الحية.
- للمراجعة
- 02 cURL cURL
- Client for URLs
- أداة ومكتبة برمجية قياسية لنقل البيانات ومعاينة الطلبات والاستجابات عبر الروابط من سطر الأوامر.
- للمراجعة
- 03 HAR HAR
- HTTP Archive Format
- صيغة أرشيف قياسية بصيغة JSON تحفظ سجل طلبات واستجابات HTTP المسجلة في المتصفح.
- للمراجعة
- 04 TTFB TTFB
- Time to First Byte
- مقياس زمن انتظار المتصفح منذ إرسال الطلب حتى وصول أول بايت من استجابة الخادم.
- للمراجعة
- 05 XHR XHR
- XMLHttpRequest
- واجهة برمجية في المتصفح (بجانب Fetch) تُستخدم لإرسال طلبات HTTP في الخلفية دون إعادة تحميل الصفحة.
- للمراجعة
لا توجد بطاقات تطابق البحث والتصفية.
اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.
مهامك قبل الاختبار
خطوة صغيرة كل مرة. وإنجاز تقدر ترجع له.
-
افتح أي صفحة في CloseTag واضغط F12 لفتح تبويب Network، وفعّل خيار Disable cache ثم حدّث الصفحة (Ctrl+R)، وانقر على أول سطر لفحص تبويبي Headers وTiming.
-
في لوحة الشبكة، جرّب فلترة الجدول باستخدام Fetch/XHR أو كتابة status-code:200، ثم افتح نافذة البحث الشامل في الشبكة وابحث عن نص معين داخل رؤوس ومحتوى الرسائل.
-
افتح سطر الأوامر في جهازك ونفّذ الأمر curl -I https://www.closetag.com ثم الأمر curl -v https://www.closetag.com، وميّز بين أسطر الطلب الصادرة (>) وأسطر الاستجابة الواردة (<).
تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.
اختبر فهمك.
ووصلها للإتقان.
كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.
أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.
الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.