إجراء طلبات HTTP بدون curl

قد تعمل على خادم لا يتوفر فيه curl أو wget. قد تحتاج إلى اختبار نقطة نهاية (endpoint) ولكن هذه الأدوات مفقودة. يمكنك استخدام Bash لإرسال طلبات HTTP مباشرة.

يحتوي Bash على ميزة مخفية تسمى /dev/tcp. هذا ليس ملفاً حقيقياً، بل هو جهاز خاص يفهمه Bash. عندما تكتب إلى /dev/tcp/hostname/port ، يقوم Bash بفتح اتصال TCP من أجلك.

كيف تعمل هذه الطريقة:

تستخدم أمر exec لإدارة واصفات الملفات (file descriptors). على سبيل المثال، يمكنك فتح واصف الملف 3 للقراءة والكتابة.

تبدو الصيغة البرمجية كالتالي: exec 3<>/dev/tcp/example.com/80

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

كيفية إجراء طلب GET:

للحصول على البيانات، يجب عليك إرسال ترويسات (headers) صحيحة. ستحتاج إلى سطر فارغ في النهاية للإشارة إلى نهاية طلبك.

اتبع هذه الخطوات:

نص برمجي كمثال:

HOST="example.com"
PORT=80
REQUEST_PATH="/"
exec 3<>/dev/tcp/${HOST}/${PORT}
printf "GET ${REQUEST_PATH} HTTP/1.0\r\nHost: ${HOST}\r\n\r\n" >&3
cat <&3
exec 3>&-

تساعدك هذه التقنية على فهم كيفية تواصل العملاء (clients) والخوادم (servers) مع بعضهم البعض. وهي مهارة مفيدة لتصحيح الأخطاء (debugging) في الأنظمة ذات الإمكانيات المحدودة (minimalist systems).

المصدر: https://dev.to/kelvin_kariuki_20f4bec616/developer-take-on-til-you-can-make-http-requests-without-curl-using-bash-devtcp-578k