كيفية استخدام Curl Command في Linux

دليل شامل يشرح استخدام الأمر curl لجلب صفحات الويب وتنزيل الملفات مباشرة من جهازك الطرفي

ال لفة command هو أحد أدوات سطر الأوامر الأكثر إثارة للاهتمام التي يقدمها لك Linux. لفة يسمح الأمر للمستخدم بجلب الملفات من الخادم.

لفة هو خيار شائع لمطوري التطبيقات ومستخدمي Linux الدائمين بسبب دعمه لعدد من البروتوكولات مثل RTMP ، RTSP ، SCP ، SFTP ، SMB ، SMBS ، SMTP ، SMTPS ، TELNET ، HTTP ، HTTPS ، FTP ، FTPS ، IMAP ، IMAPS ، DICT ، FILE ، GOPHER ، LDAP ، LDAPS ، POP3 ، POP3S ، إلخ.

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

التركيب

قبل استخدام لفة الأمر ، تحقق مما إذا كان مثبتًا بالفعل على نظامك. استخدم الأمر حليقة - الإصدار للتحقق مما إذا كان لفة تم تنصيبه.

في حالة إذا لفة غير مثبت ، استخدم الخطوات التالية.

على أنظمة Ubuntu و Debian ، استعمال:

sudo apt-get update
sudo apt-get install curl

على توزيعات RHEL و CentOs و Fedora ، استعمال:

sudo yum تثبيت حليقة

الآن استخدم ملف حليقة - الإصدار الأمر للتأكد من تثبيته بشكل صحيح.

حليقة - الإصدار

انتاج:

curl 7.58.0 (x86_64-pc-linux-gnu) libcurl / 7.58.0 OpenSSL / 1.1.1 zlib / 1.2.11 libidn2 / 2.0.4 libpsl / 0.19.1 (+ libidn2 / 2.0.4) nghttp2 / 1.30. 0 librtmp / 2.3 تاريخ الإصدار: 2018-01-24 البروتوكولات: ملف dtf ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp smb smb smtp smtps telnet tftp الميزات: AsynchDNS IDN IPv6 Largefile GSS-API Kerberos SPNEGO NTWLM_ libz TLS-SRP HTTP2 UnixSockets HTTPS-proxy PSL gaurav @ ubuntu: ~ $ 

الآن نحن جاهزون لاستخدام ملف لفة يأمر.

الخيارات المتاحة مع الأمر CURL

دعونا أولاً نلقي نظرة على بعض الخيارات البارزة المتاحة مع لفة يأمر.

خياروصف
-uلتنزيل الملفات من خادم FTP
لاستئناف التنزيل المتقطع
-oلحفظ نتيجة لفة الأمر مع اسم ملف محدد مسبقًا
-أناللحصول على رؤوس HTTP لعنوان URL محدد
لحفظ نتيجة لفة الأمر مع اسم الملف الأصلي
--libcurlلإخراج كود المصدر C الذي يستخدمه libcurl للخيار المحدد
-xلاستخدام وكيل للوصول إلى URL
-#لعرض شريط التقدم لإظهار حالة التنزيل

استرداد صفحة ويب باستخدام CURL

ال لفة الأمر ، عند استخدامه بدون أي خيار ، يجلب محتوى عنوان URL المحدد في الأمر.

بناء الجملة:

curl [URL]

مثال:

حليقة //allthings.how

انتاج:

gaurav @ ubuntu: ~ $ curl //allthings.how html {overflow-x: hidden! important} html.i-amphtml-fie {height: 100٪! important؛ width: 100٪! important} html: not ([amp4ads ])، html: not ([amp4ads]) body {height: auto! important} html: not ([amp4ads]) body {margin: 0! important} body {-webkit-text-size-Adjust: 100٪؛ - moz-text-size-Adjust: 100٪ ؛ - ms-text-size-Adjust: 100٪ ؛ ضبط حجم النص: 100٪} html.i-amphtml-singledoc.i-amphtml-embedded {-ms-touch -action: pan-y؛ touch-action: pan-y} html.i-amphtml-fie> body، html.i-amphtml-singledoc> body {overflow: visual! important} html.i-amphtml-fie: not (.i-amphtml-inabox)> body، html.i-amphtml-singledoc: not (.i-amphtml-inabox)> body {position: dynamic! important} html.i-amphtml-webview> body {overflow-x : hidden! important؛ overflow-y: visual! important؛ min-height: 100vh! important} html.i-amphtml-ios-embed-legacy> body {overflow-x: hidden! important؛ overflow-y: auto! ؛ position: definitely! important} html.i-amphtml-ios-embed {overflow-y: auto! important؛ position: static} # i-amphtml-wrapper {overflow-x: hidden! important؛ over التدفق- y: تلقائي! مهم ؛ الموضع: مطلق! مهم ؛ أعلى: 0! مهم ؛ يسار: 0! مهم ؛ يمين: 0! مهم ؛ أسفل: 0! هام ؛ هامش: 0! هام ؛ عرض: منع! مهم} html.i-amphtml-ios-embed.i-amphtml-ios-overcroll، html.i-amphtml-ios-embed.i-amphtml-ios-overcroll> # i-amphtml-wrapper {-webkit-overflow-scrolling: touch! important} # i-amphtml-wrapper> body {position: dynamic! .i-amphtml-lightbox-element، # i-amphtml-wrapper + body [i-amphtml-lightbox] {visibility: hidden} # i-amphtml-wrapper + body [i-amphtml-lightbox] .i-amphtml-lightbox -element {visibility: visual} # i-amphtml-wrapper.i-amphtml-scroll-disabled، .i-amphtml-scroll-disabled {overflow-x: hidden! important؛ overflow-y: hidden! important} amp-instagram {padding: 54px 0px 0px! important؛ background-color: #fff} amp-iframe iframe {box-sizing: border-box! important} [amp-access] [amp-access-hide] {display: none} [الاشتراكات -dialog] ، جسم: ليس (.i-amphtml-s ubs-ready) [subscriptions-action]، body: not (.i-amphtml-subs-ready) [subscriptions-section] {display: none! : none} .i-amphtml-jank-meter {position: fixed؛ background-color: rgba (232،72،95،0.5)؛ bottom: 0؛ right: 0؛ color: #fff؛ font-size: 16px؛ z-index: 1000؛ padding: 5px} amp-list [resizable-children]>. i-amphtml-loading-container.amp-hidden {display: none! important} amp-list [fetch-error]، amp-list [تحميل المزيد] [تحميل المزيد زر] ، قائمة أمبير [تحميل المزيد] [تحميل أكثر نهاية] ، قائمة أمبير [تحميل أكثر] [تحميل أكثر فشل] ، قائمة أمبير [تحميل -more] [load-more-loading] {display: none} amp-list [diffable] div [role = list] {display: block} amp-story-page، amp-story [standalone] {min-height: 1px ! important؛ display: block! important؛ height: 100٪! important؛ margin: 0! important؛ padding: 0! important؛ overflow: hidden! important؛ width: 100٪! color: # 202125! important؛ position: النسبي! important} amp-story-page {background-color: # 757575} amp-story .amp-active> div، amp-story .i-amphtm l-loader-background {display: none! important} amp-story-page: not (: first-of-type): not ([مسافة]): not ([active]) {transform: translateY (1000vh)! } amp-autocomplete {position: النسبي! important؛ display: inline-block! important} amp-autocomplete> input، amp-autocomplete> textarea {padding: 0.5rem؛ border: 1px solid rgba (0،0،0،0.33) } .i-amphtml-autocomplete-results، amp-autocomplete> input، amp-autocomplete> textarea {font-size: 1rem؛ line-height: 1.5rem} [amp-fx ^ = fly-in] {visibility: hidden} amp-script [nodom] {position: fixed! important؛ top: 0! important؛ width: 1px! important؛ height: 1px! important؛ overflow: hidden! important؛ visibility: hidden} 

هنا ، يتم جلب محتوى صفحة الويب مباشرة إلى جهازك ككود مصدر.

يمكنك استخدام الخيارات -o و مع ال لفة الأمر لتخزين هذا المحتوى في ملف.

متى -o يتم استخدام الخيار ، يتم حفظ محتوى عنوان URL في دليلك الحالي باسم ملف محدد من قبل المستخدم.

بناء الجملة:

curl -o [userdefined_filename] [URL]

مثال:

gaurav @ ubuntu: ~ / workspace $ curl -o ath. 0:00:03 -: -: - 58743 gaurav @ ubuntu: ~ / workspace $ ls ath.html gaurav @ ubuntu: ~ / workspace $ 

في هذا المثال ، يتم حفظ المحتوى من عنوان URL "allthings.how" كملف HTML باسم ath.html في دليل عملي الحالي. عند فتح ملف HTML هذا ، ستتم إعادة توجيهي إلى صفحة الويب المحفوظة.

تنزيل الملفات باستخدام الأمر CURL

باستخدام الخيار مع الأمر curl يحفظ أيضًا المحتوى أو صفحة الويب أو حزمة قابلة للتنزيل كملف ولكنه يحفظ هذا الملف باسمه الأصلي.

دعونا نرى هذا من خلال مثال:

مثال:

لقد استخدمت هنا ملف لفة الأمر مع خيار تنزيل حزمة Ubuntu باسم "cherrytree_0.37.6-1.1_all.deb"من مستودع حزم Ubuntu.

gaurav @ ubuntu: ~ / workspace $ curl -O //kr.archive.ubuntu.com/ubuntu/pool/universe/c/cherrytree/cherrytree_0.37.6-1.1_all.deb٪ إجمالي٪ تم تلقيه٪ Xferd متوسط ​​وقت سرعة الوقت التحميل الحالي إجمالي السرعة المتبقية 100613k 100613k 0 0220k 0 0:00:02 0:00:02 -: -: - 220k gaurav @ ubuntu: ~ / workspace $

انتاج:

trinity @ ubuntu: ~ / workspace $ ls ath.html cherrytree_0.37.6-1.1_all.deb trinity @ ubuntu: ~ / workspace $

لذلك ، يتم الآن تنزيل الحزمة وحفظها في دليل العمل الحالي (CWD) باسمها الأصلي.

عرض شريط التقدم أثناء تنزيل ملف

يتوفر تعديل جمالي آخر أثناء استخدام لفة الأمر لتنزيل ملف. يمكنك عرض التقدم المحرز في تنزيل ملفك في شكل شريط تقدم على جهازك. تحتاج فقط إلى إلحاق ملف -# الخيار مع الأمر الخاص بك لتنزيل ملف.

دعونا نرى مثالا على هذا القرص.

بناء الجملة:

curl - # -O [URL]

مثال:

gaurav @ ubuntu: ~ / workspace $ curl - # -O //archive.ubuntu.com/ubuntu/pool/main/e/emacs-defaults/emacs-defaults_47.0.tar.xz ######## ################################################## ################################################## ################################## 100.0٪ gaurav @ ubuntu: ~ / workspace $ 

انتاج:

gaurav @ ubuntu: ~ / workspace $ ls ath.html cherrytree_0.37.6-1.1_all.deb emacs-defaults_47.0.tar.xz gaurav @ ubuntu: ~ / workspace $ 

في هذا الإخراج ، يمكنك ملاحظة أنني قمت بتنزيل حزمة باسم "emacs-defaults_47.0.tar.xz"في CWD الخاص بي ويتم عرض شريط التقدم في الجهاز أثناء تقدم التنزيل.

استئناف التنزيل الذي تمت مقاطعته في CURL

في كثير من الأحيان ، قد يحدث موقف حيث يتعين عليك تنزيل ملفات ذات حجم أكبر. في بعض الأحيان بسبب بعض الأسباب مثل انقطاع التيار الكهربائي أو انقطاع الشبكة ، قد يتم إيقاف التنزيل في منتصف العملية دون تنزيل الملف الكامل. حتى لو ضغطت Ctrl + C في المحطة ، يتم إحباط العملية.

ال لفة الأمر عند استخدامه مع ملف الخيار يستأنف التنزيل المتقطع.

بناء الجملة:

curl -C - -O [URL]

مثال:

في هذا الرسم التوضيحي ، حاولت تنزيل صورة Ubuntu 20.04 ISO من موقع ويب Ubuntu.

gaurav @ ubuntu: ~ / workspace $ curl -O //releases.ubuntu.com/20.04.1/ubuntu-20.04.1-desktop-amd64.iso؟_ga=2.212264532.1184373179.1600250922-1570904140.1591164974٪ الإجمالي٪ المتلقى٪ Xferd متوسط ​​السرعة الوقت الوقت الوقت التحميل الحالي تحميل إجمالي السرعة المتبقية 0 2656M 0 1744k 0 0 87038 0 8:53:17 0:00:20 8:52:57 77726 ^ C

هنا ، لقد أجهضت عمدا عملية التنزيل بواسطة Ctrl + C.

الآن سأستخدم الخيار مع لفة الأمر لاستئناف التنزيل المتقطع من نفس موقع الويب المصدر.

انتاج:

gaurav @ ubuntu: ~ / workspace $ curl -C - -O //releases.ubuntu.com/20.04.1/ubuntu-20.04.1-desktop-amd64.iso؟_ga=2.212264532.1184373179.1600250922-1570904140.1591164974 ** استئناف النقل من موضع البايت 1851392٪ إجمالي النسبة المستلمة٪ Xferd متوسط ​​وقت السرعة وقت وقت التحميل الحالي تحميل إجمالي السرعة المتبقية 0 2654M 0 20.2M 0 0 57940 0 13:20:35 0:06:06 13:14:29 98278

تم التقاط التنزيل من حيث تم إحباطه.

تنزيل الملفات من خادم FTP باستخدام CURL

إنه سهل جدًا مع لفة الأمر لتنزيل ملف من خادم FTP باستخدام امتداد -u اختيار. يجب عليك إدخال اسم المستخدم وكلمة المرور في الأمر قبل إدخال عنوان URL.

بناء الجملة:

curl -u [اسم المستخدم]: [كلمة المرور] [URL]

للتوضيح ، سأستخدم بروتوكول FTP عام عبر الإنترنت.

مثال:

gaurav @ ubuntu: ~ / workspace $ curl -O -u [email protected]: eUj8GeW55SvYaswqUyDSm5v6N ftp://ftp.dlptest.com/16-Sep-20-16-0-0.csv٪ الإجمالي٪ المتلقى٪ متوسط ​​Xferd السرعة الوقت الوقت التحميل الحالي تحميل إجمالي السرعة المتبقية 100390100390 0 0 93 0 0:00:04 0:00:04 -: -: - 93 gaurav @ ubuntu: ~ / workspace $

هنا ، قمت بتنزيل ملف باسم "16-سبتمبر -20-16-0-0.csv ' من خادم بروتوكول نقل الملفات هذا وحفظه باسمه الأصلي في CWD الخاص بي. سأتحقق من الملف الذي تم تنزيله باستخدام امتداد ls يأمر.

gaurav @ ubuntu: ~ / workspace $ ls -al total 1092 drwxrwxr-x 3 gaurav gaurav 4096 Sep 16 16:15. drwxr-xr-x 87 gaurav gaurav 266240 سبتمبر 16 10:22 .. -rw-r - r-- 1 gaurav gaurav 390 سبتمبر 16 16:15 16 سبتمبر -20-16-0-0.csv -rw- r - r-- 1 gaurav gaurav 204429 Sep 16 11:45 ath.html gaurav @ ubuntu: ~ / workspace $

تنزيل ملفات متعددة معًا باستخدام CURL

تنزيل ملفات متعددة مرة واحدة باستخدام امتداد لفة الأمر هو مهمة بسيطة للغاية. أنت فقط تستخدم ملف الخيار مع لفة الأمر مشابه للطريقة التي قمنا بها في الكتل أعلاه.

بناء الجملة:

curl -O [URL-1] -O [URL-2] -O [URL-n]

مثال:

gaurav @ ubuntu: ~ / workspace $ curl -O //archive.ubuntu.com/ubuntu/pool/universe/a/aegean/aegean_0.15.2+dfsg-1.debian.tar.xz -O //archive.ubuntu. com / ubuntu / pool / main / a / apache2 / apache2_2.4.29.orig.tar.gz٪ الإجمالي٪ المتلقى٪ Xferd متوسط ​​سرعة وقت الوقت وقت التحميل الحالي إجمالي تحميل السرعة المتبقية 100 63500100 63500 0 0 55458 0 0:00 : 01 0:00:01 -: -: - 55458100 8436k 100 8436k 0 0 123k 0 0:01:08 0:01:08 -: -: - 127k gaurav @ ubuntu: ~ / workspace $ 

في هذا المثال ، قمت بتنزيل حزمتين مختلفتين من مستودع Ubuntu.

انتاج:

gaurav @ ubuntu: ~ / workspace $ ls -al total 9596 drwxrwxr-x 3 gaurav gaurav 4096 Sep 16 16:28. drwxr-xr-x 87 gaurav gaurav 266240 سبتمبر 16 10:22 .. -rw-r - r-- 1 gaurav gaurav 390 سبتمبر 16 16:15 16 سبتمبر -20-16-0-0.csv -rw- r - r - 1 gaurav gaurav 63500 Sep 16:28 aegean_0.15.2 + dfsg-1.debian.tar.xz -rw-r - r-- 1 gaurav gaurav 8638793 Sep 16 16:29 apache2_2.4.29. Orig.tar.gz -rw-r - r-- 1 gaurav gaurav 204429 Sep 16 11:45 ath.html gaurav @ ubuntu: ~ / workspace $ 

يتم تنزيل الحزمتين في نفس الوقت باستخدام الأمر curl.

إحضار رؤوس HTTP لعنوان URL باستخدام CURL

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

يمكنك استخدام لفة الأمر مع -أنا الخيار للحصول على رؤوس HTTP لعنوان URL.

بناء الجملة:

curl -I [URL]

مثال:

gaurav @ ubuntu: ~ / workspace $ curl -I www.firefox.com HTTP / 1.1 200 موافق نوع المحتوى: text / html؛ charset = ISO-8859-1 P3P: CP = "هذه ليست سياسة P3P! راجع g.co/p3phelp لمزيد من المعلومات." التاريخ: الأربعاء ، 16 سبتمبر 2020 11:17:00 GMT Server: gws X-XSS-Protection: 0 X-Frame-Options: SAMEORIGIN Transfer-Encoding: chunked Expires: Wed، 16 Sep 2020 11:17:00 GMT Cache- التحكم: ملف تعريف ارتباط المجموعة الخاص: 1P_JAR = 2020-09-16-11 ؛ تنتهي الصلاحية = الجمعة ، 16-أكتوبر -2020 11:17:00 GMT ؛ المسار = / ؛ المجال = .google.com ؛ تأمين تعيين ملف تعريف الارتباط: NID = 204 = SpeHTVXkKYwe6uaKYLsPWmCA0A-sGb94c9jpbw067e7uhyeJnkap6TFEIESztwLOEst7KcDSBLgGrokh1EM2IZi2VPVzllH0tsvCu-QbKiunPoPJ6dD7oAnB7rxu30rAiO630vYm6SG1zbmGgxNEiB-adXp24h7iEoSq9WsjrGg. تنتهي الصلاحية = الخميس ، 18-مارس -2021 11:17:00 GMT ؛ المسار = / ؛ المجال = .google.com ؛ HttpOnly gaurav @ ubuntu: ~ / workspace $

في هذا المثال ، قمت بجلب رؤوس HTTP لـ "www.firefox.com‘.

إحضار كود C-Source باستخدام CURL

استخدام لفة الأمر مع --libcurl يمكن للخيار جلب كود المصدر C. هذا ليس له فائدة كبيرة للمستخدمين العاديين ولكن يمكن أن يكون مفيدًا جدًا لمبرمجي النظام ومحللي الأمان ومطوري التطبيقات.

بناء الجملة:

curl [URL]> اسم الملف --libcurl [code_filename]

مثال:

في هذا المثال ، قمت بجلب محتوى عنوان URL allthings.how وتخزينها في ملف باسم gy_ath.html. يتم تخزين الكود المصدري للغة C بشكل منفصل في ملف المصدر ملف.

curl //www.allthings.how> gy_ath.html --libcurl source.c 

انتاج:

gaurav @ ubuntu: ~ / workspace $ curl //www.allthings.how> gy_ath.html --libcurl source.c٪ إجمالي٪ المتلقى٪ Xferd متوسط ​​سرعة وقت وقت التحميل الحالي إجمالي سرعة التحميل المنقضية 0 0 0 0 0 0 0 0 0 -: -: - 0:00:01 -: -: - 0 gaurav @ ubuntu: ~ / workspace $

دعونا الآن نتحقق من الملفات التي تم تنزيلها.

gaurav @ ubuntu: ~ / workspace $ ls -al total 404 drwxrwxr-x 3 gaurav gaurav 4096 Sep 16 17:08. drwxr-xr-x 87 gaurav gaurav 266240 Sep 16 10:22 .. -rw-r - r-- 1 gaurav gaurav 0 سبتمبر 16 17:13 gy_ath.html -rw-r - r-- 1 gaurav gaurav 1535 16 سبتمبر 17:13 source.c gaurav @ ubuntu: ~ / workspace $

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

C sourcegaurav @ ubuntu: ~ / workspace $ cat source.c / ********* نموذج التعليمات البرمجية التي تم إنشاؤها بواسطة أداة سطر أوامر curl ********** * تم توثيق جميع خيارات curl_easy_setopt () في: * //curl.haxx.se/libcurl/c/curl_easy_setopt.html ********************************** ****************************************** / #include int main (int argc، char * argv []) {CURLcode ret؛ عقدة * hnd ؛ hnd = curl_easy_init () ، curl_easy_setopt (hnd، CURLOPT_BUFFERSIZE، 102400L) ، curl_easy_setopt (hnd، CURLOPT_URL، "//www.allthings.how") ؛ curl_easy_setopt (hnd، CURLOPT_USERAGENT، "curl / 7.58.0") ، curl_easy_setopt (hnd، CURLOPT_MAXREDIRS، 50 لترًا) ،

استخدام وكيل في CURL للوصول إلى عنوان URL

كما تمت مناقشته في المقدمة ، فإن ملف لفة يدعم الأمر مجموعة كبيرة من البروتوكولات مثل FTP و SMTP و HTTPS و SOCKS وما إلى ذلك. أحيانًا يصبح استخدام خادم وكيل لنقل الملفات أمرًا مهمًا عندما ترغب في تحسين سرعة النقل وحماية هويتك أيضًا. لفة يمكن استخدام الأمر بسهولة لنقل الملفات عبر الخادم الوكيل عن طريق إلحاق ملف -x خيار لذلك.

مثال:

curl -x [proxy_address]: [المنفذ] [URL]

في المثال أعلاه ، افترضت أن وكيلك لا يتطلب مصادقة. في حالة طلب الوكيل المصادقة لبدء النقل ، يمكنك استخدام الأمر التالي.

curl -u [اسم المستخدم]: [كلمة المرور] -x [proxy_address]: [المنفذ] [URL]

باستخدام هذه الطريقة البسيطة ، يمكننا نقل الملفات عبر خادم وكيل مع الخيار -x تستخدم مع لفة يأمر.

استنتاج

في هذا البرنامج التعليمي الموجز ، تعلمنا كيف لفة الأمر مفيد في تنزيل المحتوى مباشرة من جهازك الطرفي. تعلمنا أيضًا عن الخيارات المختلفة المتاحة باستخدام هذا الأمر لاستخدامها في مهام مختلفة.