अगर आप कुछ समय से लिनक्स एप्लिकेशन के लिए टर्मिनल-केंद्रित इंस्टॉलेशन निर्देशों का पालन कर रहे हैं, तो आपने शायद किसी न किसी बिंदु पर curl कमांड का सामना किया होगा। cURL URL के साथ डेटा ट्रांसफर करने के लिए एक कमांड-लाइन टूल है। सबसे सरल उपयोग कमांड लाइन के माध्यम से एक फाइल डाउनलोड करना है। हालांकि, यह भ्रामक है, क्योंकि cURL एक अविश्वसनीय रूप से शक्तिशाली टूल है जो इससे कहीं अधिक कर सकता है।
cURL क्या है?
मूल रूप से 1996 में डैनियल स्टेनबर्ग द्वारा वेब सर्वर से वित्तीय डेटा प्राप्त करने और इसे IRC चैनलों पर प्रसारित करने के लिए लिखा गया, cURL एक शक्तिशाली टूल बन गया है जिससे ब्राउज़र का उपयोग किए बिना डेटा प्राप्त किया जा सकता है। यदि आप हमेशा टर्मिनल का उपयोग करते हैं, तो यह आपके शस्त्रागार में सबसे महत्वपूर्ण टूल में से एक होगा।
अधिकांश लिनक्स डिस्ट्रीब्यूशन में, cURL सिस्टम में प्रीइंस्टॉल्ड होता है, और आप इसे तुरंत उपयोग कर सकते हैं। यदि यह इंस्टॉल नहीं है, तो यह अधिकांश रिपॉजिटरी में भी पाया जाता है, इसलिए आप इसे सॉफ्टवेयर सेंटर का उपयोग करके आसानी से इंस्टॉल कर सकते हैं।
विंडोज के लिए, इसमें "curl-like" कमांड नहीं है, और macOS में cURL प्रीइंस्टॉल्ड होता है लेकिन लिनक्स वर्जन जितने फ्लैग्स ऑफर नहीं करता।
इंस्टॉलेशन
आगे बढ़ने से पहले, हमें यह सुनिश्चित करना होगा कि cURL हमारे सिस्टम पर पहले से इंस्टॉल है।
लिनक्स
डेबियन/उबंटू-आधारित डिस्ट्रो में, cURL इंस्टॉल करने के लिए निम्न कमांड का उपयोग करें:
sudo apt install curl
आर्क-आधारित डिस्ट्रो में:
sudo pacman -S curl
फेडोरा/सेंटओएस/RHEL में:
sudo dnf install curl
macOS
macOS के लिए, यह पहले से प्रीइंस्टॉल्ड है, इसलिए आपको कुछ भी करने की आवश्यकता नहीं है।
विंडोज
- विंडोज 7/10/11 के लिए, cURL डाउनलोड पेज पर जाएं और आपके द्वारा चलाई जा रही आर्किटेक्चर के अनुसार 64-बिट या 32-बिट पैकेज में से चुनें। यदि आप अपनी आर्किटेक्चर नहीं जानते हैं, तो 64-बिट एक सुरक्षित विकल्प है, क्योंकि 2006 के बाद बने अधिकांश हार्डवेयर इसी पर हैं।
- सिस्टम ड्राइव पर सीधे या "C:\Program Files\" में एक फोल्डर बनाएं और इसे "cURL" नाम दें।
- आपके द्वारा डाउनलोड की गई ज़िप फाइल पर वापस जाएं, इसे खोलें, और "bin" फोल्डर के अंदर "curl.exe" ढूंढें। इसे आपके द्वारा बनाए गए cURL फोल्डर में कॉपी करें। आपके द्वारा कॉपी की गई EXE पूरी तरह से आत्मनिर्भर है और लिनक्स पर चलने वाले हर परम्यूटेशन को चलाने में सक्षम है।
- इस कमांड को वास्तव में उपयोगी बनाने के लिए, हमें इसे विंडोज में PATH वेरिएबल में जोड़ना होगा ताकि यह कमांड प्रॉम्प्ट में कहीं से भी चल सके।
- अपने स्टार्ट मेनू पर क्लिक करें,
environmentटाइप करें, और Enter दबाएं। - "Environment Variables ..." पर क्लिक करें। अब आप अपने एनवायरनमेंट वेरिएबल्स सेटिंग्स में होना चाहिए।
- "Path" एनवायरनमेंट वेरिएबल चुनें, फिर "Edit ..." पर क्लिक करें।
- पाथ एडिट डायलॉग विंडो में, "New" पर क्लिक करें और वह डायरेक्टरी टाइप करें जहां आपका "curl.exe" स्थित है - उदाहरण के लिए, "C:\Program Files\cURL"।
- इस प्रक्रिया के माध्यम से खोले गए डायलॉग विंडो पर "OK" क्लिक करें और अपने टर्मिनल में cURL होने का आनंद लें!
लिनक्स में उपयोग होने वाला cURL का हर फ्लैग विंडोज वर्जन में काम करना चाहिए।
बुद्धिमानी की बात: याद रखें कि कमांड प्रॉम्प्ट को कभी भी विंडोज टर्मिनल के साथ भ्रमित न करें। विंडोज टर्मिनल अपने स्वयं के cURL वर्जन के साथ आता है जो पावरशेल में शामिल है जो समान कार्यक्षमता प्रदान करता है लेकिन पूरी तरह से अलग तरीके से काम करता है।
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 https://google.com.
डाउनलोड रिज्यूम करना
बड़ी फाइलें डाउनलोड करते समय, आपकी इंटरनेट स्पीड के आधार पर, रुकावटें बेहद परेशान करने वाली हो सकती हैं। शुक्र है, cURL में एक रिज्यूम फंक्शन है। -C फ्लैग पास करने से यह मुद्दा तुरंत हल हो जाएगा।
एक वास्तविक उदाहरण दिखाने के लिए, मैंने Ctrl और C दबाकर बीच में डेबियन के टेस्टिंग रिलीज ISO के डाउनलोड को जानबूझकर बाधित किया।
हमारे अगले कमांड के लिए, हम -C फ्लैग अटैच कर रहे हैं। उदाहरण के लिए,
curl -C - -o ~/Downloads/debiantesting.iso -L https://cdimage.debian.org/cdimage/weekly-builds/amd64/iso-dvd/debian-testing-amd64-DVD-1.iso
डाउनलोड सफलतापूर्वक वहीं से शुरू हुआ जहां यह छूटा था।
एक से अधिक फाइलें डाउनलोड करना
क्योंकि cURL में एक साथ कई फाइलें डाउनलोड करने का सबसे सहज तरीका नहीं है, इसलिए दो विधियां हैं, प्रत्येक अपने स्वयं के समझौते के साथ।
यदि आप जिन फाइलों को डाउनलोड कर रहे हैं वे गणना की गई हैं (जैसे file1, file2, आदि), तो आप फाइलों की पूरी रेंज प्राप्त करने के लिए ब्रैकेट का उपयोग कर सकते हैं और -o फ्लैग के साथ आपके द्वारा निर्दिष्ट आउटपुट में "#"। इसे कम भ्रमित करने के लिए, यहां एक उदाहरण है:
curl "https://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 username:password -o ~/Downloads/file.zip ftp://example.com/file.zip
यह हमारे दोस्त bonobo_bob को FTP सर्वर में प्रमाणित करेगा और फाइल को डाउनलोड फोल्डर में डाउनलोड करेगा।
फाइलों को विभाजित और मर्ज करना
यदि किसी कारण से आप एक बड़ी फाइल डाउनलोड करना चाहते हैं और इसे टुकड़ों में विभाजित करना चाहते हैं, तो आप cURL के --range फ्लैग के साथ ऐसा कर सकते हैं। --range के साथ, आपको उस बाइट को निर्दिष्ट करना होगा जहां से आप शुरू करना चाहते हैं और जहां खत्म करना चाहते हैं। यदि आप रेंज का अंत निर्दिष्ट नहीं करते हैं, तो यह फाइल के बाकी हिस्से को डाउनलोड कर देगा।
नीचे दिए गए कमांड में, cURL आर्क लिनक्स के इंस्टॉलेशन इमेज के पहले 100 MB को डाउनलोड करेगा:
curl --range 0-99999999 -o arch.part1 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso
अगले 100 MB के लिए, --range 100000000-199999999 का उपयोग करें, आदि। आप && ऑपरेंड का उपयोग करके इन कमांड को चेन कर सकते हैं:
curl --range 0-99999999 -o arch.part1 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso && \ curl --range 100000000-199999999 -o arch.part2 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso && \ curl --range 200000000-299999999 -o arch.part3 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso && \ curl --range 300000000-399999999 -o arch.part4 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso && \ curl --range 400000000-499999999 -o arch.part5 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso && \ curl --range 500000000-599999999 -o arch.part6 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso && \ curl --range 600000000-699999999 -o arch.part7 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso && \ curl --range 700000000- -o arch.part8 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso
यदि आपने उपरोक्त कमांड संरचना का अक्षरशः पालन किया है, तो आठ फाइलें वहां दिखाई देनी चाहिए जहां आपने cURL को उन्हें डाउनलोड करने के लिए कहा था।
इन फाइलों को फिर से जोड़ने के लिए, यदि आप लिनक्स या macOS पर हैं तो आपको cat कमांड का उपयोग करना होगा:
cat arch.part? > arch.iso
विंडोज के लिए, आपको copy कमांड का उपयोग करना होगा:
copy /b 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
- यह इंटरनेट से डेटा हथियाने के लिए ग्राउंड अप से पूरी तरह से बनाया गया है।
- cURL की तरह
-Lया-oफ्लैग्स की आवश्यकता नहीं है; बसwget [url]टाइप करें और चल पड़ें! -rफ्लैग के साथ एक डायरेक्टरी में सब कुछ हथियाने के लिए रिकर्सिवली डाउनलोड कर सकता है।- उन सभी कार्यों को रखता है जिनकी एक यूजर को दैनिक उपयोग के लिए आवश्यकता होती है और रोजमर्रा के सिसएडमिन कार्यों को पूरा करता है।
- (लिनक्स में) कई डिपेंडेंसी की आवश्यकता नहीं होती; उन सभी को बॉक्स से बाहर उपलब्ध होना चाहिए।
cURL
- रिमोट रिट्रीवल के लिए फ्लैग्स और उपयोगी कार्यों का विशाल भंडार।
- लोकल नेटवर्किंग (LDAP) और नेटवर्क प्रिंटर (सांबा) का समर्थन करता है।
- gzip कम्प्रेशन लाइब्रेरी के साथ अच्छी तरह से काम करता है।
- libcurl पर निर्भर करता है, जो डेवलपर्स को सॉफ्टवेयर या बैश स्क्रिप्ट लिखने की अनुमति देता है जिसमें cURL की कार्यक्षमता शामिल होती है।
संक्षेप में, Wget इंटरनेट से सामान हथियाने के लिए "एवरीमैन का टूलबॉक्स" है, जबकि cURL पावर यूजर्स और सिस्टम एडमिनिस्ट्रेटर्स के लिए अधिक दानेदार नियंत्रण के साथ इस पर विस्तार करता है।
अक्सर पूछे जाने वाले प्रश्न
1. मुझे लिनक्स में सर्टिफिकेट एरर मिला। मैं इसे कैसे ठीक करूं?
यदि आपको एक एरर मिली है जिसमें "peer's certificate issuer has been marked as not trusted" जैसा कुछ कहा गया है, तो इसे ठीक करने का सबसे आसान तरीका अपने डिस्ट्रो में कॉमन सर्टिफिकेट पैकेज को पुनः इंस्टॉल करना है।
डेबियन/उबंटू-आधारित सिस्टम के लिए:
sudo apt reinstall ca-certificates
फेडोरा/सेंटओएस/RHEL के लिए:
dnf reinstall ca-certificates
आर्क-आधारित सिस्टम के लिए:
pacman -S ca-certificates
ध्यान दें कि आर्क में आप pacman -Scc का उपयोग करके सर्टिफिकेट पैकेज को पुनः इंस्टॉल करने से पहले अपने पैकेज कैश को क्लियर करना चाह सकते हैं।
यदि आपको अभी भी यह एरर मिलती है, तो सर्वर के अंत में कुछ गलत हो सकता है।
2. क्या cURL और बैश कमांड को एक साथ चलाना सुरक्षित है?
लिनक्स एप्लिकेशन इंस्टॉल करने का सबसे आम तरीका नहीं होने के बावजूद, कई डेवलपर्स (जैसे NodeJS के पीछे के लोग) हैं जो आपको curl का उपयोग रूट-एक्सेस कमांड के साथ करने के अलावा कोई विकल्प नहीं देते हैं जो बैश के माध्यम से चलता है (उदाहरण के लिए, curl [argument] | sudo -E bash -) सॉफ्टवेयर इंस्टॉल करने के लिए।
यह थोड़ा डरावना लग सकता है, लेकिन अगर एप्लिकेशन के पीछे के लोग भरोसेमंद हैं, तो आपके कुछ तोड़ने की संभावना बहुत कम है। दुर्भावनापूर्ण एक्टर हर जगह हैं और आर्क के AUR जैसे रिपॉजिटरी में घुसपैठ कर सकते हैं, इसलिए रूट एक्सेस कमांड के साथ संयोजन में curl का उपयोग करके इंस्टॉल करना आमतौर पर आपके पैकेज मैनेजर के माध्यम से ऐसा करने से अधिक असुरक्षित नहीं है।
3. क्या मैं cURL को Tor के साथ उपयोग कर सकता हूं?
हां! Tor Browser (या एक स्टैंडअलोन tor सर्विस) शुरू करें और --proxy फ्लैग का उपयोग करें। Tor आपको एक लोकल प्रॉक्सी देता है जिसका उपयोग आप अन्य एप्लिकेशन में अपना IP मास्क करने के लिए कर सकते हैं। यहां cURL के Tor के साथ उपयोग का एक उदाहरण है:
curl --proxy localhost:9050 https://example.com
स्टैंडअलोन Tor सर्विसेज अपने लिसनिंग पोर्ट के रूप में 9050 का उपयोग करेंगी, जबकि Tor ब्राउज़र पोर्ट 9150 का उपयोग करता है।
समापन
cURL लिनक्स की दुनिया के बदलते ताने-बाने के बीच लचीला साबित हुआ है, टर्मिनल यूजर के शस्त्रागार में एक महत्वपूर्ण टूल के रूप में अपनी स्थिति बनाए रखता है।
यदि आप कमांड लाइन में नए हैं, तो कुछ सबसे उपयोगी लिनक्स कमांड देखें। यदि आप केवल इंटरनेट से डेटा डाउनलोड करने के बजाय वेब सर्च करना चाहते हैं, तो आप टर्मिनल पर भी ब्राउज़ कर सकते हैं।