curl, HTTP_PROXY को अनदेखा क्यों करता है
curl के जानबूझकर रखे गए HTTP_PROXY अपवाद, प्रोटोकॉल-विशिष्ट चर, ALL_PROXY और परिवेश चर से अनुमान योग्य प्रॉक्सी परीक्षण को समझें।
HTTP गंतव्यों के लिए छोटे अक्षरों वाला http_proxy सेट करें। curl बड़े अक्षरों वाले HTTP_PROXY को जानबूझकर अनदेखा करता है। POSIX शेल में:
http_proxy=http://127.0.0.1:8080 curl http://example.com/
https_proxy=http://127.0.0.1:8080 curl https://example.com/ये मान-निर्धारण केवल ठीक बाद आने वाले कमांड पर लागू होते हैं। उदाहरण के लिसनर पते को अपने प्रॉक्सी से बदलें; सार्वजनिक एंडपॉइंट की तुलना के लिए HTTP प्रॉक्सी सूची से कोई उम्मीदवार चुनें। https_proxy चर HTTPS गंतव्यों के लिए रास्ता चुनता है; http:// वाला मान तब भी एक सामान्य HTTP प्रॉक्सी दर्शाता है जो गंतव्य तक टनल बना सकता है। PowerShell और Windows कमांड शेल में मान निर्धारित करने का सिंटैक्स अलग है।
बड़े अक्षरों वाला यही रूप खतरनाक क्यों है
CGI परिवेश आने वाले अनुरोधों के हेडर को बड़े अक्षरों वाले HTTP_ चरों में बदल सकते हैं। इसलिए Proxy नाम का अनुरोध हेडर HTTP_PROXY बन सकता है। उसे आउटबाउंड कॉन्फ़िगरेशन मानकर भरोसा करना अनुरोध डेटा को प्रॉक्सी चुनने देगा। curl की छोटे अक्षरों की शर्त इस मैपिंग से बचती है; HTTPS और अन्य प्रोटोकॉल के चरों पर यह अपवाद बिल्कुल उसी तरह लागू नहीं होता।
यदि चर बदलने से रास्ता नहीं बदलता
पहले प्रोटोकॉल-विशिष्ट चर खोजें, फिर वैकल्पिक ALL_PROXY देखें। मेल खाने वाला NO_PROXY नियम प्रॉक्सी को बायपास कर सकता है। छोटे अक्षरों वाले रूप और आपस में प्रतिस्पर्धा करती परिभाषाएँ भी मायने रखती हैं। यूनिक्स-जैसे शेल का यह लूप केवल मौजूदगी बताता है, ऐसे मान नहीं छापता जिनमें क्रेडेंशियल हो सकते हैं:
for name in http_proxy HTTP_PROXY https_proxy HTTPS_PROXY all_proxy ALL_PROXY no_proxy NO_PROXY; do
if printenv "$name" >/dev/null; then
printf '%s is set\n' "$name"
fi
doneसूचीबद्ध परिभाषाओं को स्थानीय रूप से जाँचें। यदि कोई फिर दिखाई दे, तो लॉन्च करने वाले शेल, सेवा, IDE, कंटेनर या CI की कॉन्फ़िगरेशन देखें। मौजूदगी संभावित इनपुट बताती है; यह नहीं बताती कि किस मान को प्राथमिकता मिली।
एक अनुरोध को इन प्रॉक्सी विकल्पों से अलग करने के लिए एंडपॉइंट और खाली बायपास सूची, दोनों दें:
curl --proxy http://127.0.0.1:8080 --noproxy '' --connect-timeout 5 --max-time 15 --verbose https://example.com/सीधे कनेक्शन से तुलना की अनुमति हो तो:
curl --noproxy '*' --connect-timeout 5 --max-time 15 --verbose https://example.com/ये कमांड विरासत में मिले रास्ते और कनेक्टिविटी विफलता में अंतर करने में मदद करते हैं। परिवेश की और सेटिंग बदलने से पहले प्रॉक्सी परीक्षण के परिणाम चरण-दर-चरण पढ़ें। curl के चर नियम curl पर लागू करें; किसी अनुप्रयोग का अपना रनटाइम प्रॉक्सी को अलग ढंग से खोज और संयोजित कर सकता है।