A picture with white and blue lettering on it

سواء كنت تُجرف الويب أو تستخدم API، فالأمر كله يتعلق بإرسال طلبات HTTP وتلقّي الاستجابات. وكلما كان طلبك محدداً أكثر، حصلت على بيانات أدق. لهذا تحتاج إلى الرؤوس. تأتي على هيئة أزواج مفتاح وقيمة تفصل بينها نقطتان، وهي أجزاء من استجابة HTTP تحمل تفاصيل إضافية، مثل نوع المحتوى أو تعليمات التخزين المؤقت. تساعدك الرؤوس في الحصول على التفاصيل التي تحتاجها أو تصفية الاستجابات كي لا ترى غير المهم منها. في هذه المقالة، سنتعرف إلى الأساسيات العملية لإرسال رؤوس HTTP باستخدام cURL، وكيف يمكن أن يساعدك ذلك في مهامك.

لماذا cURL؟

بعد أن عرفت ماهية رؤوس HTTP، لنتحدث بإيجاز عن cURL. إنها أداة سهلة الاستخدام لسطر الأوامر لنقل البيانات إلى الخادم المستهدف ثم إعادتها إلى حاسوبك، ما يجعلها مناسبة جداً لإرسال الرؤوس. ومن مزاياها ما يلي:

  • خفيفة الوزن
  • تدعم بروتوكولات كثيرة، بما فيها HTTP(S) وSMTP وFTP وغيرها
  • لا تتطلب مكتبات إضافية
  • متوافقة مع أنظمة التشغيل الأكثر استخداماً، مثل Windows وLinux وmacOS
  • مجاناً للاستخدام وغالباً ما تأتي مثبتة مسبقاً
  • لها وثائق تفصيلية ومجتمع مستخدمين ضخم، لذا ستجد حلاً سريعاً إذا واجهت صعوبات.

لذلك يُستخدم cURL على نطاق واسع، حتى مع وجود أدوات عديدة أخرى تتيح إرسال رؤوس HTTP.  

متى تُرسل رؤوس HTTP

بعد أن أصبحت على دراية بكل الأدوات، لنستعرض حالات استخدام إرسال رؤوس HTTP.

  • المصادقة والتفويض

عند استدعاء API أو طلب محتوى يتطلب تفويضاً، قد تحتاج إلى تقديم رمز مميز أو ما شابه للحصول على البيانات. سيؤدي إرسال رأس Authorization باستخدام cURL يزوّد الخادم بالمعلومات اللازمة للسماح لك بالوصول. تحتاج إلى استخدام -H في طلبك. في ما يلي مثال على طلب cURL إلى httpbin.org، وهي خدمة مخصصة للطلبات والاستجابات. 

  • التفاوض على المحتوى

عندما ترسل محتوى بتنسيق محدد مثل JSON أو XML وتحتاج إلى أن يفسره الخادم بصورة صحيحة، يجب أن تدرج رأس HTTP Content-type في طلبك. سيتعرف الخادم المستهدف إلى طريقة معالجة المحتوى لتقليل احتمالية الأخطاء أو التأخير.

  • CORS (مشاركة الموارد عبر المصادر)

قد يمنح التطبيق الوصول إلى الخدمات أو البيانات بناءً على الجهة التي تحاول الحصول عليها. في هذه الحالات، عندما يكون مصدر الطلب عاملاً حاسماً، يمكنك تحديد المصدر في رأس HTTP Origin لا تخلط بينه وبين المصادقة، فحالات الاستخدام هذه متشابهة وغالباً ما تجتمع، لكنها مختلفة.

  • تحديد وكيل المستخدم

يؤثر نوع العميل، سواء كان تطبيق جوال أو تطبيق ويب أو API أو غير ذلك، أيضاً في الاستجابة التي تتلقاها. يمكنك تحديد نوع العميل في طلبك والحصول على الاستجابة اللازمة.

  • ضبط إعدادات التحكم في التخزين المؤقت

تُعد إدارة إعدادات التخزين المؤقت ضرورة في كثير من الحالات، وقد تساعدك رؤوس HTTP في ذلك. كل ما عليك هو تضمين رأس Cache-control في طلبك وتحديد قيمته. ستُخزن الاستجابات مؤقتاً وفقاً للإعدادات التي حددتها.

  • إرسال طلبات مخصصة

تتطلب التطبيقات التي تستخدمها أحياناً رؤوساً مخصصة لمعالجة طلبك أو تنفيذ الإجراءات التي تريدها. في هذه الحالة، يكون تضمين هذه الرؤوس في طلباتك ضرورياً. وقد تُطلب هذه الرؤوس أحياناً للحماية من الثغرات والهجمات. ينبغي أن تقرأ الوثائق قبل استخدام تطبيق لمعرفة الرؤوس المخصصة المتاحة والضرورية.

  • إرسال طلبات مشروطة

ينبغي استخدام الرؤوس المشروطة إذا كنت تحتاج إلى بيانات محددة فقط تطابق شروطاً معينة. توفر هذه الرؤوس الوقت بجلب البيانات المطلوبة فقط، وتوفر النطاق الترددي لأنك لا تهدر جيجابايت في تحميل معلومات غير ضرورية. If-Match أو If-Modified-Since مثالان على هذه الرؤوس. 

cURL: ميزات أخرى 

  • كيفية إرسال رؤوس متعددة

قد تحتاج أحياناً إلى إرسال عدة رؤوس متعلقة بالطلب نفسه. إذا حدث ذلك، يمكنك إدراجها جميعاً باستخدام أمر cURL نفسه. تذكر استخدام الخيار H كلما أدخلت زوج مفتاح وقيمة جديداً.

  • كيفية التحقق من رؤوس الاستجابة

تُفيد رؤية رؤوس الاستجابة من الخادم المستهدف في استكشاف الأخطاء ومراقبة الأداء. فهي توفر معلومات عن الوقت الذي استغرقته معالجة طلبك أو عن وجود مشكلات في المصادقة. يمكنك رؤيتها باستخدام الخيار -I أو –head وكلاهما سيعرض لك الرؤوس فقط. 

إذا أردت رؤية الرؤوس والمحتوى معاً، فاستخدم الخيارين -i أو –include .

  • كيفية إرسال رؤوس فارغة

تتطلب بعض واجهات API رؤوساً محددة في الطلب، حتى لو لم تكن لهذه الرؤوس أي قيم. وقد تجعل الرؤوس الفارغة الرأس يتصرف بطريقة معينة. ويستخدمها المطورون أيضاً لمعرفة كيفية استجابة الخادم لمثل هذا الوضع والتحقق من عدم وجود ثغرات بانتظار المخترقين. لإرسال رأس كهذا، اكتب اسمه متبوعاً بفاصلة منقوطة من دون قيمة.

  • كيفية إزالة رأس

يضيف cURL بعض الرؤوس افتراضياً، مثل رأس User-Agent. إذا لم تكن بحاجة إليه وأردت إزالته، اكتب اسم الرأس متبوعاً بنقطتين، ولا تقدم أي قيمة.

  • كيفية تفعيل الوضع المطول

تُستخدم هذه الميزة عندما تحتاج إلى فهم كيفية تعامل الخادم مع طلبك. عند تفعيل هذا الوضع، يوفر لك cURL تفاصيل كثيرة، منها تفاصيل الطلب والاستجابة، وطريقة HTTP، والإصدار، ورمز الحالة، ومعلومات عن عملية الاتصال، وغيرها. يفيد هذا الوضع في تصحيح الأخطاء لأنه يوفر معلومات عن كل خطوة من خطوات الاتصال. يمكنك تفعيله باستخدام الخيار -v أو –verbose.

  • كيفية حفظ الرؤوس

يتطلب تصحيح الأخطاء ومراقبة الأداء غالباً حفظ الرؤوس لتحليلها والاحتفاظ بالسجلات. لذلك يمكنك حفظ الرؤوس في ملف واستخدامها لاحقاً. وللقيام بذلك:

  1. استخدم الخيارين -d أو –dump-header .
  2. إذا احتجت إلى حفظ محتوى الطلب أيضاً، فأضف الخيارين -o أو –output .
  3. بعد الأوامر، لا تنسَ تحديد اسم الملف الذي ينبغي لحاسوبك حفظ الرؤوس فيه.

ملاحظة: لا تفرق رؤوس HTTP عموماً بين حالة الأحرف. لكن بعض واجهات API تتوقع رؤوساً محددة ولن تعمل إلا إذا استخدمت أحرفاً كبيرة وصغيرة كما هو مطلوب. لذلك عليك التحقق من الوثائق بعناية قبل إرسال الرؤوس.

بروكسيات لإرسال رؤوس HTTP باستخدام cURL

عندما تُجرف الويب أو تنفذ أنشطة أخرى تتطلب إرسال طلبات كثيرة، قد تواجه مشكلات مثل حدود الطلبات أو الحظر الجغرافي. في هذه الحالة، تكون البروكسيات حليفك لضمان وصول مستقر في جميع أنحاء العالم. على سبيل المثال، تقدم DataImpulse بروكسيات مُورَّدة بطريقة أخلاقية سهلة الدمج والاستخدام مع الأدوات الأخرى، بما فيها cURL. وبهذه الطريقة، يمكنك إرسال العدد الذي تحتاجه من الطلبات من دون الاصطدام بالقيود.

خلاصة

لا تحتاج أحياناً إلى أي أدوات خاصة أو باهظة للحصول على البيانات. يتوفر cURL مجاناً ويتيح لك تحديد طلباتك كي تحصل على المعلومات، وكل ذلك بسرعة ومن دون تفاصيل غير ضرورية. ولجعل العملية أكثر فاعلية، يمكنك الجمع بين cURL وبروكسيات DataImpulse. نقدم بروكسيات بزمن استجابة قدره 1 ثانية وبنموذج تسعير الدفع حسب الاستخدام المناسب للميزانية. انقر زر “جرّب الآن” في الزاوية العلوية اليمنى من الشاشة، أو تواصل معنا عبر [email protected]

Share article: