CURL के साथ HTTP अनुरोध करना (PROXY का उपयोग करके)


451

मेरे पास यह प्रॉक्सी पता है: 125.119.175.48:8909

मैं किस तरह cURL का उपयोग करके HTTP अनुरोध कर सकता हूं curl http://www.example.com, लेकिन अपने नेटवर्क के प्रॉक्सी पते को निर्दिष्ट कर सकता हूं?

जवाबों:


411

सामान्य तरीका:

export http_proxy=http://your.proxy.server:port/

फिर आप (कई) एप्लिकेशन से प्रॉक्सी के माध्यम से जुड़ सकते हैं।

और, नीचे टिप्पणी के अनुसार, https:

export https_proxy=https://your.proxy.server:port/

76
जब आपको HTTPS ट्रैफ़िक को प्रॉक्सी करने की आवश्यकता होती है, तो पर्यावरण चर ऊपरी मामला है: HTTPS_PROXY
phatblat

18
से आदमी पृष्ठों वातावरण चर छोटे अक्षर या अपर केस में निर्दिष्ट किया जा सकता है। निचले मामले के संस्करण में पूर्वता है। http_proxy एक अपवाद है क्योंकि यह केवल निचले मामले में उपलब्ध है। प्रॉक्सी को सेट करने के लिए एक पर्यावरण चर का उपयोग करना --proxy विकल्प का उपयोग करने के समान प्रभाव है।
कैप्टन लेप्टन

@BipinVayalu, आप क्या जांचना चाहते हैं? इस तरह, जो मैं ऊपर वर्णित करता हूं, ग्राहक पारदर्शी रूप से नहीं, बल्कि प्रॉक्सी "प्रत्यक्ष तरीके" का उपयोग करता है। तो, प्रॉक्सी मानक HTTP उत्तर (HTTP कोड सहित) देता है। यदि आप एक गलत http_proxy वातावरण चर (उदाहरण के लिए। खराब पोर्ट ...) निर्यात करते हैं, तो क्लाइंट उस से कनेक्ट नहीं कर सकता है, और यह एक त्रुटि संदेश देता है: "चेतावनी! दूरस्थ होस्ट से कनेक्ट नहीं हो सकता!", या कुछ इसी तरह का। - बस इसे आज़माएँ :)
प्रसारित करें

15
यदि आप कर्ल सोर्स कोड की जांच करते हैं, तो आप url.c (लाइन 7.33 में वेरिएंट 7.39 पर लाइन) देखेंगे, वे लोअरकेस संस्करण की जांच करते हैं और यदि वे इसे नहीं ढूंढ पाते हैं, तो अपरकेस के लिए जाँच करें।
रायमस्तज

1
अधिकांश उपयोगकर्ताओं ने मुझे एक सुधार भेजा, अब मैं इसे साझा करता हूं। यदि आप प्रॉक्सी के माध्यम से HTTPS कनेक्शन का उपयोग करना चाहते हैं, तो आपको यह करना चाहिए: https_proxy = your.proxy.server: port ध्यान दें कि URL स्कीमा में "http" प्रोटॉज़ है, httpS नहीं!
प्रसारित करें

663

से man curl:

-x, --proxy <[protocol://][user:password@]proxyhost[:port]>

     Use the specified HTTP proxy. 
     If the port number is not specified, it is assumed at port 1080.

कर्ल: (7) होस्ट करने के लिए कनेक्ट नहीं कर सकता कर्ल: (7) होस्ट से कनेक्ट नहीं कर सका
user873286

जब मैं इस कमांड को चलाता हूं तो मुझे त्रुटि मिलती है: कर्ल -x, --proxy 122.72.2.200:80 mysite.com/test.php?id=1
user873286

61
"-x, --proxy" का अर्थ है कि किसी एक का उपयोग किया जा सकता है। कमांड "कर्ल -x 122.72.2.200:80 mysite.com/test.php?id=1 " या "कर्ल -प्रोक्सी 122.72.2.200:80 mysite.com/test.php.id=1 " होना चाहिए। "
IBBoard

8
डॉक्स को ठीक से ऊपर उद्धृत किया गया है, हालांकि, उपयोगकर्ता और पासवर्ड को अलग-अलग व्यक्त किया जाना चाहिए:-x user:password@proxyhost:port
एड चैपल

उत्तम उत्तर के लिए धन्यवाद!
हॉटैंग

128

उपरोक्त समाधान कुछ कर्ल संस्करणों के साथ काम नहीं कर सकते हैं जो मैंने उनके लिए खुद की कोशिश की (कर्ल 7.22.0)। लेकिन मेरे लिए क्या काम था:

curl -x http://proxy_server:proxy_port --proxy-user username:password -L http://url

आशा है कि यह इस मुद्दे को बेहतर हल करेगा!


उसी अंक में चलाएं, डेबियन व्हीज़ी द्वारा भेजा गया कर्ल अभी भी एनवी ट्रिक का समर्थन नहीं करता है
हाइपरनोट

इसके स्थान पर[1] 4812
अमीना नूरैनी

80

सावधान रहें कि यदि आप HTTP / HTTPS प्रॉक्सी के बजाय SOCKS प्रॉक्सी का उपयोग कर रहे हैं, तो आपको --socks5इसके बजाय स्विच का उपयोग करने की आवश्यकता होगी :

curl --socks5 125.119.175.48:8909 http://example.com/

आप प्रॉक्सी पक्ष पर DNS को हल करने के --socks5-hostnameबजाय उपयोग कर सकते हैं --socks5


6
यह मेरे लिए काम नहीं किया, लेकिन उपयोग --socks5-hostnameकिया।
मिखाइल रयबाक

2
@ MichałRybak वही काम करेगा जो प्रॉक्सी की तरफ DNS को हल करेगा। देखें आदमी पेज अधिक जानकारी के लिए।
फिलिप कोर्रेआ

3
curl https://api.ipify.org --proxy socks5://189.100.246.182:37339मेरे लिए ठीक काम करने लगता है। क्या --proxyकिसी तरह से विकल्प --socks5मोजे 5 प्रॉक्सी का उपयोग करते समय हीन है ?

@ user993683 यह संस्करण-निर्भर है। --proxyशायद आप अभी चाहते हैं, लेकिन यह हमेशा समर्थित नहीं था। यह भी ध्यान रखें कि socks5://और socks5h://से पहले और क्रमश: प्रॉक्सी से कनेक्ट करने के बाद होस्ट नाम (DNS) संकल्प प्रदर्शन करते हैं।
माइकल - जहां क्ले Shirky है

51

एक विचार के रूप में, एक और अच्छा विचार यह है कि इसे अपने .bashrc में जोड़ें, ताकि आप गैर-समीप से समीपवर्ती वातावरण में स्विच कर सकें:

alias proxyon="export http_proxy='http://YOURPROXY:YOURPORT';export https_proxy='http://YOURPROXY:YOURPORT'"
alias proxyoff="export http_proxy='';export https_proxy=''"

जहां आपके: आपका निर्यात ठीक वही है, आपका आईपी और पोर्ट प्रॉक्सी :-)।

फिर, बस कर

proxyon

आपका सिस्टम प्रॉक्सी का उपयोग करना शुरू कर देगा, और इसके विपरीत:

proxyoff

34

निम्न का उपयोग करें

curl -I -x 192.168.X.X:XX http://google.com

192.168.X.X:XX अपना प्रॉक्सी सर्वर आईपी और पोर्ट डालें।

-v वर्बोज़ मोड यह हेडर और प्रतिक्रिया सहित अधिक विवरण देगा।


2
इसका उत्तर होना चाहिए। हर कोई अपने HTTP पर हर HTTP क्लाइंट द्वारा किए गए हर HTTP अनुरोध के लिए एक वैश्विक चर (निर्यात) निर्दिष्ट नहीं करना चाहता है। यह विकल्प अधिक लचीलापन, IMHO देता है।
ivanleoncz

यह बहुत उपयोगी है जब आप एक यूआरएल के खिलाफ विभिन्न परदे के पीछे कोशिश कर रहे हैं। धन्यवाद।
redAce

30

आप उपयोग कर सकते हैं :

curl http://www.example.com --proxy http://125.119.175.48:8909

जैसा कि कार्ल ने समझाया है


26
"जैसा कि कार्ल द्वारा समझाया गया है", जिसका अर्थ है कि यह उत्तर उस उत्तर की एक प्रति से बेहतर नहीं है।
राेडवल्ड

26

मुझे आईपी प्राप्त करने के लिए इसका उपयोग करना पसंद है जिसके तहत मुझे देखा जाता है

curl -x http://proxy_server:proxy_port https://api.ipify.org?format=json && echo

आशा है कि यह किसी की मदद करता है।


19

के लिए curlआप अपने में प्रॉक्सी कॉन्फ़िगर कर सकते हैं ~/.curlrc( _curlrcजोड़कर Windows पर) फ़ाइल proxyमूल्य, वाक्य रचना है:

proxy = http://username:password@proxy-host:port

बस! उस फ़ाइल में कुछ साल पहले प्रॉक्सी सेटिंग को कॉन्फ़िगर किया गया था और आज सोचा, क्यों कर्ल अब काम नहीं करता है अब प्रॉक्सी एड्रेस बदल गया है और एनवी संस्करण सभी सही हैं। उसके लिए धन्यवाद!
इमली

15

सभी महान उल्लिखित उत्तरों को संक्षेप में प्रस्तुत करें:

curl -x http://<user>:<pass>@<proxyhost>:<port>/ -o <filename> -L <link>

8

प्रमाणीकरण के साथ एक प्रॉक्सी के साथ मैं उपयोग करता हूं:

curl -x <protocol>://<user>:<password>@<host>:<port> --proxy-anyauth <url>

क्योंकि, मुझे नहीं पता कि कर्ल http [s] _प्रोक्सी पर्यावरण चर का उपयोग / पकड़ क्यों नहीं करता है ।



3

http[s]_proxyयदि आप सिर्फ एक बंद कमांड के लिए प्रॉक्सी सेट कर रहे हैं तो आपको शेल वैरिएबल को निर्यात करने की आवश्यकता नहीं है । जैसे

http_proxy=http://your.proxy.server:port curl http://www.example.com

उस ने कहा, curl -xअगर मुझे पता था कि मैं हमेशा एक प्रॉक्सी का उपयोग करने जा रहा हूं तो मैं पसंद करूंगा ।


2

अपने कार्यस्थल के आधार पर, आपको CA प्रमाणपत्रों के साथ पिछले संभावित मुद्दों को प्राप्त करने के लिए -kया --insecureकर्ल के लिए विकल्प निर्दिष्ट करने की आवश्यकता हो सकती है ।

curl -x <myCompanyProxy>:<port> -k -O -L <link to file to download>

1
sudo curl -x http://10.1.1.50:8080/ -fsSL https://download.docker.com/linux/ubuntu/gpg

यह मेरे लिए पूरी तरह से काम करता है, त्रुटि आती है क्योंकि कर्ल को प्रॉक्सी सेट करने की आवश्यकता होती है

रिमाइमर अपने प्रॉक्सी के साथ प्रॉक्सी को बदलें, मेरा, "उदाहरण" http://10.1.1.50:8080/ था ।


0

मामले में प्रॉक्सी पीएसी फ़ाइल के साथ स्वचालित प्रॉक्सी का उपयोग कर रहा है। हम PAC URL से जावास्क्रिप्ट से वास्तविक प्रॉक्सी पा सकते हैं।

और अगर प्रॉक्सी को प्रमाणीकरण की आवश्यकता है, तो हम पहले वेबसाइट पर पहुंचने के लिए एक सामान्य वेब-ब्राउज़र का उपयोग कर सकते हैं जो प्रमाणीकरण संवाद को बढ़ावा देगा। प्रमाणीकरण के बाद, हम प्रॉपर सर्वर पर भेजे जाने वाले http पैकेज, http पैकेज से कैप्चर करने के लिए वायरशर्क का उपयोग कर सकते हैं, हम http हेडर से ऑर्कुट टोकन प्राप्त कर सकते हैं: प्रॉक्सी-ऑथराइजेशन

फिर हम http_proxy पर्यावरण चर सेट कर सकते हैं और http हेडर में प्रॉक्सी टोकन भी शामिल कर सकते हैं: प्रॉक्सी-प्राधिकरण

निर्यात http_proxy = http: // xyserver : port

कर्ल-एच "प्रॉक्सी-प्राधिकरण: xxxx" http: // targetURL

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.