إذا كنت تتبع إرشادات التثبيت التي تركز على المحطة الطرفية لتطبيقات Linux لفترة من الوقت ، فمن المحتمل أن تكون قد صادفت curl
الأمر في وقت ما أو آخر. cURL هي أداة سطر أوامر لنقل البيانات باستخدام عناوين URL. أحد أبسط الاستخدامات هو تنزيل ملف عبر سطر الأوامر. ومع ذلك ، يعد هذا خادعًا ، لأن cURL أداة قوية بشكل لا يصدق يمكنها فعل المزيد.
ما هو cURL؟
تم كتابته في الأصل بواسطة Daniel Sternberg في عام 1996 للحصول على البيانات المالية من خوادم الويب وبثها إلى قنوات IRC ، وقد تطور cURL ليصبح أداة قوية للحصول على البيانات دون الحاجة إلى استخدام متصفح. إذا كنت تستخدم الجهاز دائمًا ، فستكون هذه واحدة من أهم الأدوات في ترسانتك.
في معظم توزيعات Linux ، يتم تثبيت cURL مسبقًا في النظام ، ويمكنك استخدامه على الفور. حتى إذا لم يتم تثبيته ، فهو موجود أيضًا في معظم المستودعات ، لذا يمكنك تثبيته بسهولة باستخدام مركز البرامج.
بالنسبة لنظام التشغيل Windows ، لا يحتوي على أمر “curl-like” ، وقد تم تثبيت cURL مسبقًا على macOS ولكنه لا يقدم العديد من العلامات مثل إصدار Linux.
التركيب
قبل المضي قدمًا ، يجب أن نتأكد من تثبيت cURL بالفعل على نظامنا.
لينكس
في التوزيعات المستندة إلى Debian / Ubuntu ، استخدم الأمر التالي لتثبيت cURL:
sudo apt تثبيت حليقة
في التوزيعات القائمة على القوس:
sudo pacman -S curl
في Fedora / CentOS / RHEL:
sudo dnf تثبيت حليقة
macOS
بالنسبة لنظام التشغيل macOS ، تم تثبيته مسبقًا بالفعل ، لذا لن تحتاج إلى القيام بأي شيء.
شبابيك
- بالنسبة لنظام التشغيل Windows 7/10/11 ، توجه إلى صفحة تنزيل cURL واختر من بين حزم 64 بت أو 32 بت ، وفقًا للبنية التي تقوم بتشغيلها. إذا كنت لا تعرف الهندسة المعمارية الخاصة بك ، فإن 64 بت هو رهان آمن ، حيث أن الغالبية العظمى من الأجهزة التي تم تصنيعها بعد عام 2006 موجودة عليها.
- أنشئ مجلدًا إما مباشرة على محرك أقراص النظام أو في “C: \ Program Files \” وسميه “cURL”.
- ارجع إلى ملف zip الذي نزّلته وافتحه وابحث عن “curl.exe” داخل مجلد “bin”. انسخ ذلك إلى مجلد cURL الذي أنشأته. EXE الذي نسخته مستقل تمامًا وقادر على تشغيل كل تبديل يمكنك تشغيله على Linux.
- لجعل هذا الأمر مفيدًا بالفعل ، يتعين علينا إضافته إلى متغير PATH في Windows بحيث يمكن تشغيله من موجه الأوامر في أي مكان.
- انقر فوق قائمة ابدأ واكتب
environment
واضغط Enter. - انقر فوق “متغيرات البيئة …” يجب أن تكون الآن في إعدادات متغيرات البيئة الخاصة بك.
- حدد متغير البيئة “المسار” ، ثم انقر فوق “تحرير …”
- بمجرد دخولك إلى نافذة حوار تحرير المسار ، انقر على “جديد” واكتب الدليل الذي يوجد به “curl.exe” – على سبيل المثال ، “C: \ Program Files \ cURL”.
- انقر فوق “موافق” في نوافذ الحوار التي فتحتها خلال هذه العملية واستمتع بوجود cURL في جهازك!
يجب أن تعمل كل علامة في cURL قابلة للاستخدام في Linux في إصدار Windows.
كلمة للحكماء: تذكر أنه لا ينبغي أبدًا الخلط بين موجه الأوامر وبين Windows Terminal. يأتي Windows Terminal مع نسخته الخاصة من cURL المضمنة في PowerShell والتي تقدم وظائف مماثلة ولكنها تعمل بشكل مختلف تمامًا.
باستخدام cURL
للبدء ، ما curl maketecheasier.com
عليك سوى كتابة جهازك الطرفي واضغط Enter.
إذا لم تحصل على أي مخرجات ، فذلك لأن خادم هذا الموقع غير مهيأ للاستجابة لطلبات الاتصال العشوائية إلى المجال الذي لا يحتوي على www. إذا قمت باستقصاء خادم غير موجود أو غير متصل بالإنترنت ، فستتلقى رسالة خطأ تفيد بأن cURL لا يمكنه حل المضيف.
لجعل cURL يفعل شيئًا مفيدًا بالفعل ، سيتعين علينا تحديد بروتوكول. في مثالنا ، نستخدم بروتوكول HTTPS للاستعلام عن الصفحة الرئيسية لهذا الموقع. اكتب curl https://www.maketecheasier.com
.
إذا سارت الأمور على ما يرام ، يجب أن تحدق في جدار ضخم من البيانات. لجعل هذه البيانات أكثر قابلية للاستخدام ، يمكننا إخبار cURL بوضعها في ملف HTML:
curl https: // www.maketecheasier.com > ~ / Downloads / mte.html
يضع هذا الأمر محتويات مخرجات موقعنا في ملف HTML في مجلد التنزيلات. انتقل إلى المجلد باستخدام مدير الملفات المفضل لديك وانقر نقرًا مزدوجًا فوق الملف الذي أنشأته للتو. يجب أن يفتح لقطة من إخراج HTML للصفحة الرئيسية لهذا الموقع.
وبالمثل ، يمكنك استخدام -o
العلم لتحقيق نفس النتيجة:
curl -o ~ / Downloads / mte.html https: // www.maketecheasier.com
متابعة عمليات إعادة التوجيه
تعيد معظم المواقع تلقائيًا توجيه حركة المرور من بروتوكول “http” إلى بروتوكول “https”. في cURL ، يمكنك تحقيق نفس الشيء باستخدام -L
العلم. سيتبع هذا تلقائيًا عمليات إعادة التوجيه 301 حتى تصل إلى صفحة أو ملف قابل للقراءة.
curl -L http: // google.com.
استئناف التنزيل
عند تنزيل ملفات كبيرة ، اعتمادًا على سرعة الإنترنت لديك ، يمكن أن تكون الانقطاعات مزعجة للغاية. لحسن الحظ ، يحتوي cURL على وظيفة استئناف. تمرير -C
العلم سيهتم بهذه المشكلة في لمح البصر.
لإظهار مثال من العالم الحقيقي ، قمت بمقاطعة تنزيل إصدار اختبار دبيان ISO عن قصد بالضغط عليه Ctrlوفي Cمنتصف الاستيلاء عليه.
لأمرنا القادم ، يتم رفع -C
العلم. فمثلا،
حليقة -C - -o ~ / التحميل / debiantesting.iso -L HTTPS: // cdimage.debian.org / cdimage / أسبوعيا، يبني / AMD64 / ايزو دي في دي / لاختبار ديبيان-AMD64-DVD- 1 ايزو
بدأ التنزيل بنجاح من حيث توقف.
تحميل أكثر من ملف
نظرًا لأن cURL ليس لديه الطريقة الأكثر سهولة لتنزيل ملفات متعددة ، فهناك طريقتان ، كل واحدة لها حل وسط خاص بها.
إذا تم تعداد الملفات التي تقوم بتنزيلها (على سبيل المثال ، file1 ، file2 ، وما إلى ذلك) ، فيمكنك استخدام الأقواس للحصول على النطاق الكامل للملفات و “#” داخل الإخراج الذي تحدده -o
بالعلامة. لجعل هذا أقل إرباكًا ، إليك مثال:
curl "http://example.com/file[1-5].zip" -o "# 1_ # 2"
أبسط طريقة للقيام بذلك هي باستخدام -O
( --remote-name
). هذا العلم يجعل cURL يقوم بتنزيل الملف البعيد على ملف محلي بنفس الاسم. نظرًا لأنك لست مضطرًا لتحديد مخرجات ، يجب عليك استخدام هذا الأمر عندما تكون المحطة الطرفية مفتوحة في الدليل الذي تريد تنزيل الملفات إليه.
curl -O "https://example.com/file1.zip" -O "https://example.com/file2.zip"
إذا كان لديك قدر كبير من الملفات التي تم تعدادها لتنزيلها ، --remote-name-all
فهذه علامة أفضل لهذا:
curl --remote-name-all "https://example.com/file[1-5].zip"
يمكنك حتى تحديد الملفات غير المعدودة القادمة من نفس الموقع دون الحاجة إلى إعادة كتابة عنوان URL باستخدام الأقواس:
curl --remote-name-all "https://example.com/{file1.zip،anotherfile.zip،thisisfun.zip}"
التنزيل باستخدام المصادقة
قم بتنزيل الملفات التي تتطلب المصادقة (على سبيل المثال ، عند الاستيلاء على خادم FTP خاص) مع -u
العلم. يجب أن يتم كل طلب مصادقة باستخدام اسم المستخدم أولاً وكلمة المرور ثانيًا ، مع نقطتين تفصل بينهما. إليك مثال لتبسيط الأمور:
curl -u اسم المستخدم: password -o ~ / Downloads / file.zip ftp: // example.com / file.zip
سيؤدي هذا إلى مصادقة صديقنا bonobo_bob في خادم FTP وتنزيل الملف في مجلد التنزيلات.
تقسيم الملفات ودمجها
إذا كنت ترغب لأي سبب من الأسباب في تنزيل ملف كبير وتقسيمه إلى أجزاء ، فيمكنك القيام بذلك باستخدام --range
علم cURL . باستخدام --range
، يجب عليك تحديد البايت الذي تريد البدء منه حتى البايت الذي تريد الانتهاء عنده. إذا لم تحدد نهاية النطاق ، فسيتم فقط تنزيل بقية الملف.
في الأمر أدناه ، ستقوم cURL بتنزيل أول 100 ميغابايت من صورة تثبيت Arch Linux:
حليقة --range 0 - 99999999 -o arch.part1 -L HTTPS: // mirrors.chroot.ro / آرش لينكس / ايزو / 2021/11/01 / آرش لينكس-2021/11/01-x86_64.iso
بالنسبة لـ 100 ميغابايت التالية ، استخدم --range 100000000-199999999
، إلخ. يمكنك ربط هذه الأوامر باستخدام &&
المعامل:
حليقة --range 0 - 99999999 -o arch.part1 -L HTTPS: // mirrors.chroot.ro / آرش لينكس / ايزو / 2021/11/01 / آرش لينكس-2021/11/01-x86_64.iso && \ حليقة --range 100000000 - 199999999 -o arch.part2 -L HTTPS: // mirrors.chroot.ro / آرش لينكس / ايزو / 2021/11/01 / آرش لينكس-2021/11/01-x86_64.iso && \ حليقة --range 200000000 - 299999999 -o arch.part3 -L HTTPS: // mirrors.chroot.ro / آرش لينكس / ايزو / 2021/11/01 / آرش لينكس-2021/11/01-x86_64.iso && \ حليقة - المدى 300000000 - 399999999 -o arch.part4 -L HTTPS: // mirrors.chroot.ro / آرش لينكس / ايزو / 2021/11/01 / آرش لينكس-2021/11/01-x86_64.iso && \ حليقة - النطاق 400000000 - 499999999 -o arch.part5 -L HTTPS: // mirrors.chroot.ro / آرش لينكس / ايزو / 2021/11/01 / آرش لينكس-2021/11/01-x86_64.iso && \ حليقة - النطاق 500000000 - 599999999 -o arch.part6 -L HTTPS: // mirrors.chroot.ro / آرش لينكس / ايزو / 2021/11/01 / آرش لينكس-2021/11/01-x86_64.iso && \ حليقة - النطاق 600000000 - 699999999 -o arch.part7 -L HTTPS: // mirrors.chroot.ro / آرش لينكس / ايزو / 2021/11/01 / آرش لينكس-2021/11/01-x86_64.iso && \ حليقة - المدى 700000000 - -o arch.part8 -L HTTPS: // mirrors.chroot.ro / آرش لينكس / ايزو / 2021/11/01 / آرش لينكس-2021/11/01-x86_64.iso
إذا اتبعت بنية الأوامر أعلاه بالحرف ، فيجب أن تظهر ثمانية ملفات حيث طلبت من cURL تنزيلها.
لتوحيد هذه الملفات ، سيتعين عليك استخدام cat
الأمر إذا كنت تستخدم Linux أو macOS مثل:
القط قوس. > arch.iso
بالنسبة لنظام التشغيل Windows ، سيتعين عليك استخدام copy
الأمر مثل هذا:
نسخ / ب arch.part * arch.iso
ميزات مفيدة أخرى
هناك الكثير من الأعلام والاستخدامات لـ cURL:
-#
– يستخدم شريط التقدم للإشارة إلى مدى تقدمك في ما تمسك به. مثال:curl -# https://asite.com/somefile.zip > ~/somefile.zip
.-a
– يطلب من cURL الإلحاق بملف بدلاً من الكتابة فوقه. مثال:curl -ao ~/collab-full.x https://example-url.com/collab-part26.x
.--head
– يمسك فقط رأس الاستجابة من الخادم بدون بيانات الإخراج. يكون هذا مفيدًا عندما تقوم إما بتصحيح أخطاء موقع ويب أو إلقاء نظرة خاطفة على استجابات الخادم المبرمجة للعملاء. مثال:curl --head https://example-url.com
.--limit-rate
– طلب التنزيل بنطاق ترددي محدود. إنه مفيد في المواقف التي لا تريد فيها استخدام cURL لكل النطاق الترددي المتاح في نظامك. سيتم تفسير رقم بسيط على أنه بايت في الثانية. تمثل K كيلوبايت في الثانية ؛ M تمثل ميغا بايت في الثانية. مثال:curl --limit-rate 8M https://example-url.com/file.zip > ~/file.zip
.-o
– كما ذكرنا سابقًا ، يحدد ملف الإخراج لاستخدام cURL. مثال:curl -o ~/Downloads/file.zip https://thefileplace.com/file.zip -o file2.zip https://thefileplace.com/file2.zip
.--proxy
– إذا كنت تريد العمل مع وكيل ، فهذه هي الطريقة للقيام بذلك. مثال:curl --proxy proxyurl:port https://example-url.com/file.zip > ~file.zip
.
cURL مقابل Wget
تم إصدار كلاهما في نفس العام (1996) ، cURL و Wget برنامجين شقيقين إلى حد كبير للمراقب العادي. الغوص أعمق قليلاً ، رغم ذلك ، يمكنك أن ترى أن هاتين الأختين لهما أغراض مختلفة.
Wget
- لقد تم إنشاؤه بالكامل من الألف إلى الياء للحصول على البيانات من الإنترنت.
- لا يحتاج
-L
أو-o
أعلام مثل cURL ؛ فقط اكتبwget [url]
وانطلق! - يمكن التنزيل بشكل متكرر للاستيلاء على كل شيء في دليل بامتداد
-r
العلم. - لديه جميع الوظائف التي يحتاجها المستخدم للاستخدام اليومي ويلبي مهام مسؤول النظام اليومية.
- (في Linux) لا يحتاج إلى الكثير من التبعيات ؛ يجب أن يكون كل منهم متاحًا خارج الصندوق.
لفة
- ذخيرة موسعة من الأعلام والوظائف المفيدة للاسترجاع عن بُعد.
- يدعم الشبكات المحلية (LDAP) وطابعات الشبكة (Samba).
- يعمل بشكل جيد مع مكتبات ضغط gzip.
- يعتمد على libcurl ، والذي يسمح للمطورين بكتابة برامج أو نصوص bash تتضمن وظائف cURL.
باختصار ، Wget هو “صندوق أدوات كل رجل” للاستيلاء على الأشياء من الإنترنت ، بينما يتوسع cURL في هذا مع المزيد من التحكم الدقيق للمستخدمين المحترفين ومسؤولي النظام.
أسئلة مكررة
1. حصلت على خطأ في الشهادة في Linux. كيف أصلحه؟
إذا تلقيت خطأ يفيد بأن شيئًا ما مثل “مُصدر شهادة النظير قد تم تمييزه على أنه غير موثوق به” ، فإن أسهل طريقة لإصلاح ذلك هي إعادة تثبيت حزمة الشهادات الشائعة في التوزيع الخاص بك.
للأنظمة المستندة إلى Debian / Ubuntu:
sudo apt إعادة تثبيت شهادات كاليفورنيا
بالنسبة إلى Fedora / CentOS / RHEL:
dnf إعادة تثبيت شهادات كاليفورنيا
للأنظمة القائمة على القوس:
بكمن -s كاليفورنيا-الشهادات
لاحظ أنه في Arch قد ترغب في مسح ذاكرة التخزين المؤقت للحزمة باستخدام pacman -Scc
قبل إعادة تثبيت حزمة الشهادات.
إذا استمر ظهور هذا الخطأ ، فقد يكون هناك خطأ ما في نهاية الخادم.
2. هل من الآمن تشغيل أوامر cURL و bash معًا؟
على الرغم من أنها ليست الطريقة الأكثر شيوعًا لتثبيت تطبيقات Linux ، إلا أن هناك عددًا من المطورين (مثل الأشخاص الذين يقفون وراء NodeJS) لا يمنحك أي خيار سوى الاستخدام curl
جنبًا إلى جنب مع أمر الوصول إلى الجذر الذي يتم تشغيله من خلال bash (على سبيل المثال ،curl [argument] | sudo -E bash -
) لتثبيت البرمجيات.
قد يبدو الأمر مخيفًا بعض الشيء ، ولكن إذا كان الأشخاص الذين يقفون وراء التطبيق جديرين بالثقة ، فمن غير المرجح أن تكسر شيئًا ما. الجهات الفاعلة الخبيثة موجودة في كل مكان ويمكنها التسلل إلى المستودعات مثل Arch’s AUR ، لذا فإن التثبيت باستخدام curl
أوامر الوصول إلى الجذر ليس بشكل عام أكثر خطورة من القيام بذلك من خلال مدير الحزم الخاص بك.
3. هل يمكنني استخدام cURL مع Tor؟
نعم! ابدأ متصفح Tor (أو خدمة Tor مستقلة) واستخدم --proxy
العلم. يمنحك Tor وكيلًا محليًا يمكنك استخدامه لإخفاء عنوان IP الخاص بك في تطبيقات أخرى. فيما يلي مثال على cURL المُستخدم مع Tor:
curl - المضيف المحلي proxy : 9050 http: // example.com
ستستخدم خدمات Tor المستقلة 9050 كمنفذ استماع ، بينما يستخدم متصفح Tor المنفذ 9150.
تغليف
أثبت cURL مرونته وسط النسيج المتغير لعالم Linux ، مع الحفاظ على مكانته كأداة مهمة في ترسانة مستخدم المحطة.
اكتشاف المزيد من مجلة الإخلاص
اشترك للحصول على أحدث التدوينات المرسلة إلى بريدك الإلكتروني.