cURL या Client URL एक ऐसा उपकरण है जिसे फ़ाइलों को प्राप्त करने, APIs के साथ इंटरफ़ेस करने और यहां तक कि वेब संसाधन परीक्षण के लिए विकसित किया गया है। यह Windows, Mac और Linux ऑपरेटिंग सिस्टम पर भी उपलब्ध है, जिससे किसी भी cURL उपयोगकर्ता के लिए फ़ाइलें डाउनलोड करना आसान हो जाता है। Client URL सरल फ़ाइल डाउनलोडिंग के साथ-साथ डेटा हेरफेर और स्क्रिप्ट एंबेडिंग जैसे अधिक उन्नत कार्यों के लिए उपयुक्त है।
इस लेख में, हम cURL का उपयोग करके फ़ाइलों को डाउनलोड करने का तरीका बताएंगे, जिसमें डाउनलोडिंग के लिए कुछ उपयोगी cURL कमांड्स, नाम और फ़ोल्डर निर्दिष्ट करना, रीडायरेक्ट, गति प्रतिबंध और बहुत कुछ शामिल है। हम Windows, Linux, और Mac प्रणालियों पर cURL के विशिष्ट कमांड्स को भी कवर करेंगे।
डाउनलोड किए गए दस्तावेज़ को सहेजते समय सही फ़ाइल नाम चुनना आवश्यक है। cURL डेटा को नहीं सहेजता है, बल्कि इसे टर्मिनल पर प्रदर्शित करता है। इसलिए, यदि उपयोगकर्ता फ़ाइल को बचाने के लिए एक स्थान का चयन नहीं करता है, तो यह फ़ाइल सिस्टम में नहीं मिलेगा।
cURL के सभी कमांड कमांड लाइन पर दिए जाते हैं: Windows में cmd या PowerShell और Linux या macOS में टर्मिनल का उपयोग करके।
मैन्युअल रूप से फ़ाइल नाम देने के लिए उपयोगकर्ता को कमांड "-o" या विस्तृत फ़ॉर्मेट "--output" का उपयोग करना होगा।
निम्नलिखित उदाहरण पर विचार करें:
curl -o test.html https://example.com
यह कमांड पेज को example.com पर लाया जाएगा और इसे test.html के रूप में वर्तमान कार्यशील निर्देशिका में सहेजेगा।
cURL, डिफ़ॉल्ट रूप से, फ़ाइल को उसी निर्देशिका में सहेजेंगे जिसमें निष्पादन योग्य फ़ाइल होती है जब तक कि अन्यथा निर्दिष्ट न हो।
cURL का उपयोग कैसे करता है एक फ़ाइल को उस निर्देशिका को निर्दिष्ट करने के साथ जिसमें फ़ाइल को संग्रहीत किया जाना है:
curl -o ~/Downloads/test.html https://example.com
यह विकल्प फ़ाइल को उपयोगकर्ता के होम डायरेक्टरी में डाउनलोड उप-फ़ोल्डर में रखेगा।
इस कॉन्फ़िगरेशन में यदि फ़ाइल पहले से मौजूद है, तो नई फ़ाइल बिना किसी चेतावनी के पुरानी फ़ाइल को प्रतिस्थापित कर देगी। इसे टालने के लिए cURL -O का उपयोग करें ताकि फ़ाइल URL में दिए नाम से सहेजी जा सके:
curl -O https://example.com/file.txt
यदि file.txt वह है जो URL में प्रदान किया गया है, तो यह स्वचालित रूप से उस नाम के साथ संग्रहीत किया जाएगा। यदि ऐसी फ़ाइल पहले से मौजूद है, तो इसे बदल दिया जाएगा।
यह सुनिश्चित करने के लिए कि डेटा का कोई नुकसान नहीं है, कोई भी डाउनलोड करने से पहले एक सत्यापन प्रॉम्प्ट सेट कर सकता है:
if [ -f file.txt ]; then
echo "File already exists!"
else
curl -O https://example.com/file.txt
fi
यह स्क्रिप्ट पहले यह देखने के लिए स्कैन करता है कि क्या फ़ाइल पहले से मौजूद है, केवल फ़ाइल को डाउनलोड करना यदि यह नहीं है।
कुछ फ़ाइलों को विशिष्ट स्थानों में सहेजा नहीं जाता है, बल्कि एक पुनर्निर्देशन के माध्यम से प्राप्त किया जाता है। उदाहरण के लिए, एक बड़ी फ़ाइल को डाउनलोड करने की कोशिश करने वाले एक cURL उपयोगकर्ता को पता चल सकता है कि ब्राउज़र डाउनलोड शुरू करने से पहले उन्हें दूसरे पृष्ठ पर निर्देशित करता है। cURL डिफ़ॉल्ट रूप से रीडायरेक्ट का पालन नहीं करता है, लेकिन इसे बदला जा सकता है।
cURL को स्वचालित रूप से पुनर्निर्देशित करने के लिए सक्षम करने के लिए, ध्वज जोड़ें -L:
curl -L -o test.zip https://example.com/download
यदि सर्वर शुरू में उपयोगकर्ता को पुनर्निर्देशित करता है, तो cURL नया अनुरोध पहले और केवल तब किया जाएगा जब फ़ाइल को URL से डाउनलोड किया जाएगा।
यह महत्वपूर्ण क्यों है:
cURL की विधि प्रत्येक पुनर्निर्देशन को क्रम से संसाधित करती है, अनुक्रम में प्रत्येक लिंक का पालन करते हुए जो दूसरे URL की ओर ले जाता है जब तक यह लक्ष्य लिंक तक न पहुँच जाए। यदि सर्वर अनंत पुनर्निर्देशन लूप में फंस जाता है, तो सर्वर अटक जाएगा। पुनर्निर्देशनों की संख्या को प्रबंधित करने के लिए cURL में ‘--max-redirs’ कमांड उपलब्ध है।
curl -L --max-redirs 5 -o file.zip https://example.com/download
यह पैरामीटर cURL पर प्रतिबंध लगाता है, इसलिए यह डाउनलोडिंग प्रक्रिया को रोकता है यदि बहुत अधिक रीडायरेक्ट संसाधित होते हैं और निर्दिष्ट सीमा से अधिक हो जाते हैं।
एक उदाहरण cURL देता है जब पुनर्निर्देशन सीमाएं पार हो जाती हैं तो निम्नलिखित है:
curl: (47) Maximum redirection limit reached
cURL का उपयोग करके आप एक साथ कई फ़ाइलों को डाउनलोड कर सकते हैं, और कुछ कमांड के साथ कई ऑपरेटिंग सिस्टम में काम करेंगे, जबकि अन्य विंडोज या लिनक्स/मैकओएस के लिए विशिष्ट होंगे।
curl -O https://example.com/file1.zip -O https://example.com/file2.zip
curl -O https://example.com/file{1,2,3}.zip
Get-Content urls.txt | ForEach-Object { curl -O $_ }
For ($i=1; $i -le 3; $i++) { curl -O "https://example.com/file$i.zip" }
शुरू करने के लिए, URLs की सूची वाली urls.txt फाइल बनाएं:
https://example.com/file1.zip
https://example.com/file2.zip
https://example.com/file3.zip
फिर यह कमांड चलाएं:
xargs -n 1 curl -O < urls.txt
जब फ़ाइलों को क्रमांकित किया गया हो, तो for लूप का उपयोग सुविधाजनक होता है:
for i in {1..5}; do
curl -O https://example.com/file$i.zip
done
जब बड़ी फ़ाइल cURL से डाउनलोड करने की आवश्यकता होती है और कम बैंडविड्थ ट्रैफ़िक की उम्मीद होती है, तो --limit-rate फ़्लैग उपलब्ध है, जो (k) किलোবाइट प्रति सेकंड, (m) मेगाबाइट प्रति सेकंड, या (g) गीगाबाइट प्रति सेकंड में डाउनलोड गति पर कैप सेट करने में मदद करता है।
cURL उपयोगकर्ताओं के लिए, कमांड संरचना हर OS पर समान होती है:
curl --limit-rate 500k -O https://example.com/archive.zip
इस मामले में, 500k का अर्थ है कि डाउनलोड गति 500 KB/s से अधिक नहीं होगी।
अन्य नोट्स:
यहां एक नमूना स्क्रिप्ट है जो archive1.zip, archive2.zip, और archive3.zip को 500 KB/s की डाउनलोड गति पर डाउनलोड करता है।
Windows (PowerShell):
1..3 | ForEach-Object { curl --limit-rate 500k -O https://example.com/archive$_.zip }
Linux/macOS (Bash):
for i in {1..3}; do
curl --limit-rate 500k -O https://example.com/archive$i.zip
done
--limit-rate विकल्प एक स्थिर नेटवर्क कनेक्शन की स्थिति में प्रभावी होता है क्योंकि यह नेटवर्क व्यवधान की संभावनाओं को कम करता है। यह तब सहायक होता है जब एक साथ कई फ़ाइलें डाउनलोड की जा रही हों, या यदि नेटवर्क पर अन्य गतिविधियां हो रही हों। अतिरिक्त रूप से, --limit-rate उन परिस्थितियों में सर्वर द्वारा ब्लॉक किए जाने की संभावनाओं को कम करने में मदद करता है जहाँ डाउनलोड पर प्रतिबंध होते हैं। जब डाउनलोड प्रॉक्सी के माध्यम से किया जाता है, तो यह पैरामीटर भार को कम करने और कनेक्शन कटने की संभावनाओं को न्यूनतम करने में मदद करता है। यह कमांड मोबाइल इंटरनेट या सीमित डेटा वाले टैरिफ के साथ काम करते समय ट्रैफ़िक प्रबंधित करने में भी मदद करता है।
cURL में, डाउनलोड की प्रगति और गति डिफ़ॉल्ट रूप से टर्मिनल विंडो में दिखाई जाती है यह कुछ cURL उपयोगकर्ताओं के लिए उपयोगी है हालांकि इसे स्क्रिप्ट या स्वचालित प्रक्रियाओं के लिए दबाया जा सकता है इन मामलों में -s या --silent फ़्लैग को सक्षम किया जा सकता है।
“साइलेंट” मोड में cURL कमांड लाइन का उपयोग करके फ़ाइलों को डाउनलोड करने का उदाहरण:
curl -s -O https://example.com/file.zip
जैसा कि कमांड से पता चलता है सभी फ़ाइलें cURL के साथ बिना कोई जानकारी स्क्रीन पर दिखाए डाउनलोड की जाएंगी केवल त्रुटियाँ दिखाने और अन्य सभी संदेशों को म्यूट करने के लिए -S (--show-error) का उपयोग करके उपरोक्त आर्गुमेंट्स के साथ संयोजन किया जा सकता है:
curl -s -S -O https://example.com/file.zip
कुछ फ़ाइलों को डाउनलोड करने और कुछ API का उपयोग करने के लिए प्राधिकरण आवश्यक होता है cURL में ऐसे कई प्रमाणन प्रक्रियाओं का समर्थन करने वाली संरचना है जैसे उपयोगकर्ता नाम और पासवर्ड या एक्सेस टोकन।
यदि पहुँच के लिए उपयोगकर्ता नाम और पासवर्ड की आवश्यकता होती है तो इन्हें -u फ़्लैग के साथ एक तर्क के रूप में भेजा जा सकता है:
curl -u username:password -O https://example.com/protected-file.zip
यदि पासवर्ड में विशेष वर्ण जैसे @ # & आदि हों तो पासवर्ड को उद्धरण चिह्नों में रखना उचित है:
curl -u username:"your@password#123" -O https://example.com/protected-file.zip
यदि केवल उपयोगकर्ता नाम भेजा जाता है तो cURL पासवर्ड पूछेगा।
धारक प्रणालियों में प्राधिकरण के लिए एक और विधि एक्सेस टोकन का उपयोग करना है इस मामले में टोकन को अनुरोध हेडर में इस प्रकार शामिल किया जाता है:
curl -H "Authorization: Bearer your_token_here" -O https://api.example.com/data.json
कुछ सेवाएं टोकन को सीधे URL में शामिल करने की आवश्यकता कर सकती हैं तब कमांड इस तरह दिखेगा:
curl -O https://api.example.com/data.json?access_token=your_token_here
किसी भी मामले में URL में टोकन डालना समस्याग्रस्त हो सकता है क्योंकि उपयोगकर्ता का पथनाम ब्राउज़र इतिहास या सर्वर लॉग में संग्रहीत हो सकता है
ये प्रमाणीकरण विधियाँ उस समय अच्छी तरह काम करती हैं जब किसी को संरक्षित सर्वर की फ़ाइलों से डेटा प्राप्त करने API से डेटा अनुरोध करने या कॉर्पोरेट वातावरण के भीतर डेटा तक पहुँचने की आवश्यकता होती है
प्रॉक्सी विशेष रूप से cURL के लिए उपयोगी हैं और इसका सामान्य उपयोग दूरस्थ फ़ाइल एक्सेस में है क्योंकि cURL अधिकांश प्रोटोकॉल पर डेटा के प्रसारण का समर्थन करता है।
एक प्रॉक्सी सेट करना के साथ किया जाता है -x (या –proxy).
कमांड का सामान्य रूप निम्नलिखित है:
curl -x [scheme://]proxy-server[:port] -o output.file URL
उदाहरण: HTTP प्रॉक्सी के माध्यम से एक फ़ाइल डाउनलोड करना:
curl -x http://proxy.testnet.com:80 -o file.zip https://example.com/archive.zip
कहाँ:
जब प्रॉक्सी सर्वर के लिए एक उपयोगकर्ता नाम और पासवर्ड की आवश्यकता होती है, तो उनका उपयोग इस तरह से किया जा सकता है:
curl -x http://proxy.example.com:80 -U user:password -o archive.zip https://example.com/archive.zip
एक अलग दृष्टिकोण - URL के माध्यम से प्रमाणीकरण पास करना:
curl -x http://user:password@proxy.example.com:80 -o archive.zip https://example.com/archive.zip
SOCKS5 या SOCKS4 के साथ काम करने के लिए, उदाहरण के लिए, प्रकार के साथ --proxy पैरामीटर सेट करें:
curl --proxy socks5h://proxy.example.com:1080 -o archive.zip https://example.com/archive.zip
महत्वपूर्ण बारीकियों:
प्रॉक्सी गुमनामी प्रदान करेगा क्योंकि मूल आईपी पता उन साइटों के लिए उपलब्ध नहीं होगा जो उपयोगकर्ताओं के दौरे पर हैं। इसके अतिरिक्त, कुछ क्षेत्रों के संसाधनों पर रखे गए ब्लॉक को बाईपास किया जा सकता है यदि इसे किसी अलग देश से एक्सेस किया जाता है। फ़ाइलों को डाउनलोड करने के लिए एक प्रॉक्सी का उपयोग करके, कॉर्पोरेट नेटवर्क के उपयोगकर्ता बंद संसाधनों का उपयोग कर सकते हैं और प्रदाता या डेटा कैशिंग से प्रतिबंध के परिणामस्वरूप लोडिंग गति में सुधार कर सकते हैं।
cURL का उपयोग करके फ़ाइलों को डाउनलोड करने की प्रक्रिया की उचित निगरानी के लिए सतर्क रहना उचित है, विशेष रूप से बड़ी फ़ाइलों के साथ। यह अंतर्निर्मित क्षमताओं का उपयोग करके किया जा सकता है, जिनमें इंटरैक्टिव डाउनलोड बार और विस्तृत प्रगति प्रदर्शन शामिल हैं।
-# या --progress-bar फ्लैग बुनियादी प्रतिशत डाउनलोड संकेतक को एक चलती हुई बार से बदल देता है। यह तब उपयोगी होता है जब सिस्टम प्रदर्शन को अधिक संक्षिप्त और ग्राफिकल रूप में मापने की आवश्यकता हो।
curl -# -o file.zip https://example.com/file.zip
एक भरने वाला संकेतक बार बाएँ से दाएँ की ओर चलता है:
यह विधि सुविधाजनक होती है जब उपयोगकर्ता दिखाए जाने वाली जानकारी की मात्रा पर सीमा रखते हुए संचालन पर नज़र रखना चाहता हो।
डाउनलोड की जा रही गति, समय, और डेटा की मात्रा को अधिक विस्तार से देखने के लिए, -v और -w विकल्पों का संयोजन उपयोग किया जा सकता है।
curl -v -o file.zip https://example.com/file.zip
curl -o file.zip -w "Download speed: %{speed_download} bits per second\n" https://example.com/file.zip
यह पूरे प्रक्रिया के दौरान डाउनलोड गति की निगरानी सक्षम करता है।
जहाँ कनेक्शन अस्थिर होता है, वहाँ डाउनलोड गति का सावधानीपूर्वक आकलन किया जा सकता है। यदि कोई अवरोध होता है, तो प्रक्रिया की गति में अचानक गिरावट या संपूर्ण अवनति होगी। जब कनेक्शन स्थिर होता है, तो गति और समग्र नेटवर्क प्रदर्शन की निगरानी की जा सकती है।
cURL कमांड सूचना की एक भीड़ की पुनर्प्राप्ति के लिए अनुमति देता है जो डिस्कनेक्ट, रिमाइफ़ेशन, या यहां तक कि HTTP प्रतिक्रिया कोड मापदंडों जैसी समस्याओं की पहचान करने में मदद कर सकता है जो त्रुटियों का निदान करने में महत्वपूर्ण हो सकता है। इस उद्देश्य के लिए, -v ध्वज का उपयोग किया जाएगा जो विस्तारित आउटपुट मोड पर स्विच करता है।
उदाहरण:
curl -v -o file.zip https://example.com/archive.zip
कमांड के निष्पादन के दौरान आउटपुट कुछ हद तक इस तरह दिखेगा।
आप निम्नलिखित प्रमुख डेटा को नोटिस करेंगे:
cURL में सर्वर के अनुरोधों और प्रतिक्रियाओं के विवरण को -v फ्लैग शामिल करके देखा जा सकता है। इससे यह समझने में मदद मिलती है कि क्लाइंट सर्वर के साथ कैसे संवाद करता है। उदाहरण के लिए, पुनर्निर्देशन के मामले में, यदि सर्वर स्थान को नए URL पर बदल देता है, तो "-v" कमांड “status 301 Moved Permanently” या “302 Found” का उपयोग प्रदर्शित करेगा।
इसका उपयोग त्रुटियों की जांच के लिए भी किया जा सकता है, जैसे “403 Forbidden” या “404 Not Found”, जो प्रतिबंधित पहुंच और फ़ाइल की अनुपस्थिति को दर्शाते हैं। अतिरिक्त रूप से, डाउनलोड प्रक्रिया से पहले विभिन्न फ़ाइल मापदंडों का विश्लेषण करने के लिए प्रतिक्रिया हेडर की भी जांच की जा सकती है।
cURL और Wget कमांड लाइन इंटरफेस पर फ़ाइल डाउनलोड के लिए दो सबसे प्रमुख उपकरण हैं और cURL और WGET का उपयोग उस उद्देश्य के लिए व्यापक रूप से किया जाता है, फिर भी वे कार्यक्षमता में भिन्न होते हैं।
इसके अलावा, आइए हम उनमें से प्रमुख भेदों को देखें।
समारोह | cURL | Wget |
---|---|---|
समानांतर डाउनलोड के लिए समर्थन | अतिरिक्त आदेशों की आवश्यकता है | में निर्मित |
डाउनलोड का स्वचालित फिर से शुरू | आवश्यकता है -C - ध्वज | में निर्मित |
एपीआई के साथ काम करता है (पोस्ट भेजना, अनुरोध पुट, और हेडर) | डिफ़ॉल्ट रूप से | सीमित |
रीडायरेक्ट को बायपास करना | -L ध्वज के साथ | में निर्मित |
प्रॉक्सी समर्थन | डिफ़ॉल्ट रूप से | डिफ़ॉल्ट रूप से |
अंतर्निहित प्रगति बार | जरूरत है -# ध्वज | अनुपस्थित |
पृष्ठभूमि संचालन | समर्थित नहीं | जरूरत है -b ध्वज |
लिपियों में एकीकरण | हाँ (प्रतिक्रिया कोड लौटाता है) | सीमित |
Wget और cURL के कमांड सिंटैक्स में भी अंतर है:
Wget मुख्यतः फ़ाइल डाउनलोड करने के लिए बनाया गया प्रतीत होता है, जबकि cURL HTTP अनुरोधों और API के साथ इंटरैक्ट करने के लिए विकसित किया गया था।
समर्थित प्रोटोकॉल की दृष्टि से, कई पहलुओं में Wget की तुलना में cURL को अधिक सुविधा है।
वास्तव में, cURL प्रोटोकॉल की एक भीड़ के समर्थन के लिए सराहनीय है, नामकरण सम्मेलनों, प्रॉक्सी उपयोग, और डाउनलोड को फिर से शुरू करने की क्षमता फ़ाइल।
cURL न केवल सरल डाउनलोड के लिए एपिस के साथ एकीकृत हो रहे हैं या बड़े पैमाने पर डेटा लाने के लिए उपयुक्त हैं। हालांकि, रीडायरेक्ट करने, गति सीमा निर्धारित करने, प्रमाणित करने और सर्वर इंटरैक्शन को ट्रैक करने की इसकी क्षमता, सर्वर कनेक्शन निदान और वेब संसाधन परीक्षण की अनुमति देता है, यह एक महान बहुउद्देशीय उपकरण बनाता है। और पेश किए गए लचीले पैरामीटर अनुकूलन के साथ, cURL को किसी भी और हर कार्य के अनुरूप बनाया जा सकता है।
टिप्पणियाँ: 0