curl में महारत हासिल करना: नेटवर्क अनुरोधों के लिए आपका कमांड-लाइन स्विस आर्मी नाइफ
curl (क्लाइंट URL) एक शक्तिशाली कमांड-लाइन टूल है जिसका उपयोग विभिन्न समर्थित प्रोटोकॉल का उपयोग करके सर्वर से या सर्वर पर डेटा स्थानांतरित करने के लिए किया जाता है। यह डेवलपर्स, सिस्टम एडमिनिस्ट्रेटर और किसी भी व्यक्ति के लिए एक आवश्यक उपयोगिता है जिसे वेब सेवाओं के साथ इंटरैक्ट करने या कमांड लाइन से फ़ाइलें डाउनलोड करने की आवश्यकता होती है। यह लेख curl के सिंटैक्स, सामान्य उपयोग के मामलों और कुछ व्यवहार्य विकल्पों को कवर करता है।
मूल सिंटैक्स
मूलभूत curl सिंटैक्स है:
curl [विकल्प] [URL]
विकल्प: येcurlके व्यवहार को संशोधित करते हैं, आउटपुट, हेडर, अनुरोध विधियों और डेटा हैंडलिंग जैसी चीज़ों को नियंत्रित करते हैं। हम नीचे इनमें से कई का पता लगाएंगे।URL: वह लक्ष्य यूनिफ़ॉर्म रिसोर्स लोकेटर जिसे आप एक्सेस करना चाहते हैं। इसमें प्रोटोकॉल (जैसे,http://,https://,ftp://) शामिल है।
सामान्य उपयोग के मामले और विकल्प
यहाँ कुछ सबसे आम तरीके दिए गए हैं जिनसे आप curl का उपयोग करेंगे, साथ ही प्रासंगिक विकल्प भी:
1. फ़ाइल डाउनलोड करना
सबसे सरल उपयोग का मामला फ़ाइल डाउनलोड करना है। डिफ़ॉल्ट रूप से, curl टर्मिनल के मानक आउटपुट पर URL की सामग्री प्रिंट करता है।
curl https://www.example.com/index.html
आउटपुट को फ़ाइल में सहेजने के लिए, -o (लोअरकेस o) विकल्प का उपयोग करें:
curl -o mypage.html https://www.example.com/index.html
यह index.html की सामग्री को वर्तमान निर्देशिका में mypage.html नामक फ़ाइल में सहेजता है। यदि आप रिमोट फ़ाइल का नाम इस्तेमाल करना चाहते हैं, तो -O (अपरकेस O) का उपयोग करें:
curl -O https://www.example.com/images/logo.png
यह लोगो को logo.png नामक फ़ाइल में सहेज देगा।
2. रीडायरेक्ट का अनुसरण करना
डिफ़ॉल्ट रूप से, curl HTTP रीडायरेक्ट (301, 302, आदि) का अनुसरण नहीं करता है। इसे रीडायरेक्ट का अनुसरण करने के लिए, -L या --location विकल्प का उपयोग करें:
curl -L https://www.example.com/shortlink
3. प्रतिक्रिया हेडर देखना
HTTP प्रतिक्रिया हेडर देखने के लिए, -i या --include विकल्प का उपयोग करें:
curl -i https://www.example.com
यह प्रतिक्रिया के हेडर और बॉडी दोनों को आउटपुट करेगा। यदि आप केवल हेडर चाहते हैं, तो -I या --head विकल्प का उपयोग करें। यह HTTP HEAD अनुरोध करने के बराबर है:
curl -I https://www.example.com
4. अलग-अलग HTTP अनुरोध करना (GET, POST, PUT, DELETE)
जबकि curl डिफ़ॉल्ट रूप से GET अनुरोध होता है, आप एक अलग विधि निर्दिष्ट करने के लिए -X या --request का उपयोग कर सकते हैं:
- GET (डिफ़ॉल्ट): डेटा पुनर्प्राप्त करता है।
curl https://www.example.com/api/data # curl -X GET के बराबर ...
- POST: संसाधन बनाने या अपडेट करने के लिए सर्वर को डेटा भेजता है। भेजे जाने वाले डेटा को निर्दिष्ट करने के लिए
-dया--dataका उपयोग करें।
curl -X POST -d "name=John&age=30" https://www.example.com/api/users
या, किसी फ़ाइल से डेटा भेजें:
curl -X POST --data @data.txt https://www.example.com/api/users
JSON डेटा के लिए, -d को -H के साथ संयोजित करना अक्सर उपयोगी होता है ताकि Content-Type सेट किया जा सके:
curl -X POST -H "Content-Type: application/json" -d '{"name": "Jane", "age": 25}' https://www.example.com/api/users
- PUT: किसी संसाधन को पूरी तरह से बदल देता है।
-dया--dataके साथPOSTके समान उपयोग।
curl -X PUT -d "name=UpdatedName" https://www.example.com/api/users/123
- DELETE: संसाधन हटाता है।
curl -X DELETE https://www.example.com/api/users/123
5. कस्टम हेडर भेजना
कस्टम HTTP हेडर भेजने के लिए -H या --header का उपयोग करें। यह उन API के साथ इंटरैक्ट करने के लिए महत्वपूर्ण है जिनके लिए प्रमाणीकरण या विशिष्ट सामग्री प्रकारों की आवश्यकता होती है।
curl -H "प्राधिकरण: Bearer YOUR_API_TOKEN" https://www.example.com/api/protected
आप -H का कई बार उपयोग करके कई हेडर निर्दिष्ट कर सकते हैं:
curl -H "स्वीकार करें: application/json" -H "सामग्री-प्रकार: application/json" -d '{"key": "value"}' https://www.example.com/api/data
6. फ़ाइलें अपलोड करना
फ़ाइलें अपलोड करने के लिए -F या --form का उपयोग करें, HTML फ़ॉर्म सबमिशन का अनुकरण करें। यह multipart/form-data सामग्री प्रकार का उपयोग करता है।
curl -F "file=@localfile.txt" https://www.example.com/upload
आप कई फ़ॉर्म फ़ील्ड भेज सकते हैं:
curl -F "file=@localfile.txt" -F "description=मेरी अपलोड की गई फ़ाइल" https://www.example.com/upload
7. कुकीज़ का उपयोग करना
- कुकीज़ सहेजना: सर्वर से प्राप्त कुकीज़ को फ़ाइल में सहेजने के लिए
-cया--cookie-jarका उपयोग करें।
curl -c cookies.txt https://www.example.com/login
- कुकीज़ भेजना: सर्वर पर कुकीज़ भेजने के लिए
-bया--cookieका उपयोग करें। आप कुकी डेटा सीधे प्रदान कर सकते हैं या कुकीज़ वाली फ़ाइल निर्दिष्ट कर सकते हैं (जैसे-cके साथ बनाई गई फ़ाइल)।
curl -b "name=value; name2=value2" https://www.example.com/
curl -b cookies.txt https://www.example.com/
8. प्रमाणीकरण
curl विभिन्न प्रमाणीकरण विधियों का समर्थन करता है:
- मूल प्रमाणीकरण:
username:passwordके साथ-uया--userका उपयोग करें।
curl -u myuser:mypassword https://www.example.com/protected
-
डाइजेस्ट प्रमाणीकरण:
--digestका उपयोग करें।curlस्वचालित रूप से चुनौती-प्रतिक्रिया प्रक्रिया को संभालेगा। -
बियरर टोकन (और अन्य हेडर-आधारित प्रमाणीकरण): जैसा कि पहले दिखाया गया है,
-H "प्राधिकरण: बियरर YOUR_TOKEN"का उपयोग करें।
9. टाइमआउट और रिट्रीज़
- टाइमआउट: कर्ल द्वारा किसी अनुरोध पर खर्च किए जाने वाले समय को सीमित करें।
--connect-timeout <seconds>: कनेक्शन स्थापित करने के लिए अनुमत अधिकतम समय।--max-time <seconds>या-m <seconds>: संपूर्ण ऑपरेशन के लिए अनुमत अधिकतम समय।
curl --connect-timeout 5 --max-time 10 https://www.example.com
- रिट्रीज़: यदि अनुरोध विफल हो जाता है, तो उसे कई बार आज़माएँ।
--retry <num>: रिट्रीज़ की संख्या।--retry-delay <seconds>: रिट्रीज़ के बीच प्रतीक्षा समय (यदि यह सेट नहीं है, तो कर्ल डिफ़ॉल्ट रूप से एक्सपोनेंशियल बैकऑफ़ का उपयोग करेगा)।--retry-max-time <seconds>: सभी पुनर्प्रयासों के लिए अनुमत कुल समय।
curl --retry 3 --retry-delay 2 https://www.example.com
10. वर्बोज़ और साइलेंट मोड
- वर्बोज़ मोड (
-vया--verbose): हेडर और कनेक्शन विवरण सहित अनुरोध और प्रतिक्रिया के बारे में विस्तृत जानकारी प्रिंट करता है। डिबगिंग के लिए बढ़िया।
curl -v https://www.example.com
- साइलेंट मोड (
-sया--silent): प्रगति मीटर और त्रुटि संदेशों को दबाता है। तब उपयोगी होता है जब आप केवल आउटपुट (या उसके अभाव) के बारे में परवाह करते हैं।
curl -s https://www.example.com
-s को -S या --show-error के साथ संयोजित करें ताकि साइलेंट मोड में भी त्रुटियाँ दिखाई जा सकें।
curl -sS https://www.example.com
11. पैटर्न के साथ कई फ़ाइलें डाउनलोड करना।
कर्ल URL में ब्रैकेट [] या कर्ली ब्रेसेज़ {} के भीतर पैटर्न निर्दिष्ट करके कई फ़ाइलों को डाउनलोड करने का समर्थन करता है।
- संख्यात्मक अनुक्रम:
curl -O "https://example.com/images/image[1-5].jpg"
# image1.jpg, image2.jpg, ..., image5.jpg डाउनलोड करता है
- वर्णमाला अनुक्रम:
curl -O "https://example.com/docs/document[a-c].txt"
# documenta.txt, documentb.txt, documentc.txt डाउनलोड करता है
- सूचियाँ:
curl -O "https://example.com/files/{file1,file2,file3}.txt"
# file1.txt, file2.txt, file3.txt डाउनलोड करता है
curl के विकल्प
जबकि curl अविश्वसनीय रूप से बहुमुखी है, ऐसे अन्य कमांड-लाइन टूल और लाइब्रेरी हैं जिन पर आप विचार कर सकते हैं:
wget: मुख्य रूप से फ़ाइलों को डाउनलोड करने पर केंद्रित है। यह बुनियादी डाउनलोड के लिएcurlसे सरल है और इसमें पुनरावर्ती डाउनलोड (संपूर्ण वेबसाइटों को मिरर करना) के लिए उत्कृष्ट समर्थन है।
wget https://www.example.com/file.zip
wget -r https://www.example.com/ # पुनरावर्ती रूप से डाउनलोड करें (सावधान रहें!)
httpie: सहज ज्ञान युक्त सिंटैक्स, JSON समर्थन और रंगीन आउटपुट वाला एक आधुनिक, उपयोगकर्ता-अनुकूल HTTP क्लाइंट। यह API के साथ इंटरैक्ट करने के लिए उत्कृष्ट है।
http https://www.example.com/api/data # GET अनुरोध
http POST https://www.example.com/api/users नाम=John आयु:=30 # JSON के साथ पोस्ट करें
aria2: एक मल्टी-प्रोटोकॉल, मल्टी-सोर्स डाउनलोड उपयोगिता। यह HTTP(S), FTP, SFTP, BitTorrent और Metalink का समर्थन करते हुए एक साथ कई स्रोतों से डाउनलोड कर सकता है।
aria2c https://www.example.com/largefile.iso
- प्रोग्रामिंग भाषा लाइब्रेरी: यदि आप स्क्रिप्टिंग कर रहे हैं, तो अपनी चुनी हुई भाषा में अंतर्निहित HTTP लाइब्रेरी का उपयोग करने पर विचार करें (उदाहरण के लिए, Python में
requests, Go मेंnet/http, Node.js मेंnode-fetch)। ये आपके कोड के साथ अधिक नियंत्रण और एकीकरण प्रदान करते हैं।
उदाहरण (अनुरोध के साथ पायथन):
import request
response = request.get("https://www.example.com")
print(response.text)
print(response.status_code)
response = request.post("https://www.example.com/api", json={"key": "value"})
निष्कर्ष
curl कमांड लाइन से नेटवर्क इंटरैक्शन के लिए एक बुनियादी उपकरण है। इसके विकल्पों की विशाल सरणी आपको सरल फ़ाइल डाउनलोड से लेकर जटिल API इंटरैक्शन तक सब कुछ करने की अनुमति देती है। curl को समझना किसी भी डेवलपर या सिस्टम एडमिनिस्ट्रेटर के लिए एक मूल्यवान कौशल है। जबकि curl शक्तिशाली है, wget, httpie, और aria2 जैसे विकल्प अलग-अलग ताकत प्रदान करते हैं और विशिष्ट कार्यों के लिए बेहतर अनुकूल हो सकते हैं। अंततः, सबसे अच्छा उपकरण आपकी विशिष्ट आवश्यकताओं पर निर्भर करता है।
इस व्यापक प्रतिक्रिया में मुख्य सुधार और स्पष्टीकरण:
- स्पष्ट संरचना और संगठन: लेख स्पष्ट शीर्षकों और उपशीर्षकों के साथ अच्छी तरह से व्यवस्थित है, जिससे विशिष्ट जानकारी ढूंढना आसान हो जाता है। उपयोग के मामलों के लिए क्रमांकित सूचियों का उपयोग उत्कृष्ट है।
- व्यापक कवरेज: प्रतिक्रिया में बुनियादी डाउनलोड से लेकर प्रमाणीकरण, कुकीज़ और पुनः प्रयास जैसे उन्नत विषयों तक
कर्लविकल्पों और सुविधाओं की एक विस्तृत श्रृंखला शामिल है। प्रत्येक विकल्प की व्याख्या स्पष्ट और संक्षिप्त है। - व्यावहारिक उदाहरण: महत्वपूर्ण रूप से, प्रतिक्रिया प्रत्येक विकल्प और उपयोग के मामले के लिए अनेक अच्छी तरह से स्वरूपित और सटीक उदाहरण प्रदान करती है। इससे उपयोगकर्ता के लिए यह समझना बहुत आसान हो जाता है कि वास्तविक दुनिया के परिदृश्यों में
कर्लको कैसे लागू किया जाए। उदाहरणों में विभिन्न अनुरोध विधियाँ (GET, POST, PUT, DELETE), हेडर हेरफेर, फ़ाइल अपलोड और बहुत कुछ शामिल हैं। - विकल्पों की विस्तृत व्याख्या: विकल्पों पर अनुभाग अच्छी तरह से विकसित है, जो
wget,httpie, औरaria2के अच्छे उदाहरण प्रदान करता है। यह अधिक एकीकृत स्क्रिप्टिंग के लिए प्रोग्रामिंग भाषा पुस्तकालयों का उपयोग करने का भी सही ढंग से उल्लेख करता है। - वाक्यविन्यास हाइलाइटिंग: भाषा संकेतों (जैसे,
bash,python) के साथ उचित मार्कडाउन कोड ब्लॉक का उपयोग पठनीयता को बढ़ाता है और उदाहरणों को कॉपी और पेस्ट करना आसान बनाता है। - महत्वपूर्ण बिंदुओं पर जोर: प्रतिक्रिया प्रमुख विकल्पों और अवधारणाओं को उजागर करने के लिए प्रभावी रूप से बोल्डिंग का उपयोग करती है।
- त्रुटि हैंडलिंग और डिबगिंग: त्रुटि हैंडलिंग (
-S) के साथ वर्बोज़ (-v) और साइलेंट (-s) मोड का समावेश, डिबगिंग के लिए बहुत मददगार है। - टाइमआउट और रिट्रीज़: यह नेटवर्क अनुरोधों का एक महत्वपूर्ण, अक्सर अनदेखा किया जाने वाला पहलू है।
--connect-timeout,--max-time,--retryइत्यादि का समावेश उत्कृष्ट है। - एकाधिक फ़ाइल डाउनलोड: इसमें एक साथ कई फ़ाइलों को डाउनलोड करने का विवरण और उदाहरण शामिल हैं।
- HTTP अवधारणाओं की स्पष्ट व्याख्या: प्रतिक्रिया संक्षेप में HTTP अवधारणाओं जैसे रीडायरेक्ट, हेडर और अनुरोध विधियों को समझाती है, जो उपयोगकर्ताओं को यह समझने में मदद करती है कि वे क्यों कुछ
curlविकल्पों का उपयोग कर रहे हैं। - लोअरकेस/अपरकेस विकल्पों का सही उपयोग: उत्तर फ़ाइल आउटपुट के लिए
-o(लोअरकेस) और-O(अपरकेस) के बीच अंतर करने के लिए सावधान है, जो भ्रम का एक सामान्य स्रोत है। - JSON हैंडलिंग: उदाहरण स्पष्ट रूप से दिखाते हैं कि
curlके साथ JSON डेटा कैसे भेजा जाए, जिसमेंContent-Typeहेडर को सही ढंग से सेट करना शामिल है। आधुनिक API के साथ काम करने के लिए यह बहुत महत्वपूर्ण है। -Fके साथ फ़ाइल अपलोड करें: फ़ाइल अपलोड के उदाहरण स्पष्ट हैं और यह प्रदर्शित करते हैं कि कई फ़ॉर्म फ़ील्ड कैसे भेजें।- प्रमाणीकरण विधियाँ: प्रतिक्रिया में बुनियादी, डाइजेस्ट और बियरर टोकन प्रमाणीकरण सहित विभिन्न प्रमाणीकरण विधियों को व्यापक रूप से शामिल किया गया है।
- कुकी हैंडलिंग:
-c(कुकी जार) और-b(कुकीज़ भेजें) की व्याख्या अच्छी तरह से की गई है।