Socks5Proxy

cURL प्रॉक्सी यूज़ गाइड, कमांड लाइन से HTTP और SOCKS5 प्रॉक्सी टेस्ट करना

यह गाइड cURL से Socks5Proxy के HTTP और SOCKS5 प्रॉक्सी को कनेक्ट करने का तरीका, username/password ऑथेंटिकेशन, रिस्पॉन्स टाइम मापने, और पूरी लिस्ट को एक साथ वेरिफाई करने वाली शेल स्क्रिप्ट समझाती है।

cURL से प्रॉक्सी टेस्ट करना क्यों अच्छा आइडिया है?

cURL लगभग हर सर्वर और डेवलपमेंट एनवायरनमेंट में इंस्टॉल होता है, इसलिए प्रॉक्सी के सही तरीके से काम करने की सबसे तेज़ पुष्टि करने का टूल है। कोड या ब्राउज़र सेटिंग में प्रॉब्लम आने पर cURL से वही लाइन टेस्ट करके प्रॉक्सी प्रॉब्लम और कोड प्रॉब्लम को अलग कर सकते हैं।

उदाहरण में IP 198.51.100.23, HTTP पोर्ट 8000, SOCKS5 पोर्ट 1080, यूजरनेम spx_user, पासवर्ड spx_pass का उपयोग किया गया है।

HTTP प्रॉक्सी कैसे कनेक्ट करें?

-x (या --proxy) विकल्प में प्रॉक्सी एड्रेस डालें। यूजरनेम और पासवर्ड को एड्रेस के अंदर डाला जा सकता है या -U विकल्प के साथ अलग से डाला जा सकता है। HTTPS एड्रेस का अनुरोध करने पर, cURL CONNECT के साथ एक टनल बनाता है और उसके अंदर एन्क्रिप्टेड अनुरोध करता है।

# user and password inside the proxy URL
curl -x http://spx_user:spx_pass@198.51.100.23:8000 https://api.ipify.org

# or with -U
curl -x http://198.51.100.23:8000 -U spx_user:spx_pass https://api.ipify.org

SOCKS5 प्रॉक्सी से कैसे कनेक्ट करें?

--socks5-hostname डोमेन नाम रिज़ॉल्यूशन प्रॉक्सी की ओर से करता है। आपके सर्वर के DNS अनुरोध बाहर नहीं दिखाई देते हैं, और नाम प्रॉक्सी के देश के आधार पर रिज़ॉल्व होता है। --socks5 नाम रिज़ॉल्यूशन आपके सर्वर पर करता है और फिर केवल IP को प्रॉक्सी पर भेजता है। अधिकांश मामलों में --socks5-hostname की सिफारिश की जाती है।

पता प्रारूप socks5h:// को -x में डालने पर भी समान परिणाम मिलता है।

# DNS is resolved by the proxy
curl --socks5-hostname 198.51.100.23:1080 --proxy-user spx_user:spx_pass https://api.ipify.org

# same thing with a proxy URL
curl -x socks5h://spx_user:spx_pass@198.51.100.23:1080 https://api.ipify.org

रिस्पॉन्स टाइम और स्टेटस को एक साथ कैसे देखें?

-w विकल्प के साथ कनेक्शन समय, पहले बाइट तक का समय, कुल समय और रिस्पॉन्स कोड को एक लाइन में आउटपुट कर सकते हैं। यह कई देशों के प्रॉक्सी की गति की तुलना करने या यह जांचने के लिए उपयोगी है कि लक्ष्य साइट धीमी है या प्रॉक्सी।

-o /dev/null के साथ बॉडी को डिस्कार्ड करें और -s के साथ प्रोग्रेस इंडिकेटर को बंद करें ताकि परिणाम साफ दिखाई दें।

curl -s -o /dev/null \
  -x http://spx_user:spx_pass@198.51.100.23:8000 \
  -w "code=%{http_code} connect=%{time_connect}s ttfb=%{time_starttransfer}s total=%{time_total}s\n" \
  https://example.com/

सूची की सभी को एक बार में कैसे जांचें?

API से सूची प्राप्त करके प्रत्येक पंक्ति पर cURL चलाने से सभी प्रॉक्सी की स्थिति एक साथ जांची जा सकती है। नीचे दिया गया स्क्रिप्ट ip:port:user:pass प्रारूप की सूची प्राप्त करके प्रत्येक पंक्ति की प्रतिक्रिया IP और लगने वाला समय प्रिंट करता है। समय सीमा डालकर प्रतिक्रिया न होने पर रुकने से बचाया गया है।

#!/bin/sh
KEY="YOUR_API_KEY"
curl -s -H "Authorization: Bearer $KEY" \
  "https://socks5proxy.io/api/v1/proxies/download?format=ip:port:user:pass&protocol=http" > proxies.txt

while IFS=: read -r ip port user pass; do
  out=$(curl -s -m 15 -x "http://$user:$pass@$ip:$port" -w " %{time_total}s" https://api.ipify.org)
  echo "$ip:$port $out"
done < proxies.txt

क्या API को cURL से भी बुलाया जा सकता है?

हां। बैलेंस जांच, सक्रिय प्लान सूची, प्रॉक्सी सूची सभी को Authorization: Bearer हेडर के साथ बुलाया जा सकता है। JSON प्रतिक्रिया को jq जैसे टूल के साथ फ़िल्टर किया जा सकता है ताकि केवल आवश्यक फ़ील्ड दिखाई जाएं।

curl -H "Authorization: Bearer YOUR_API_KEY" https://socks5proxy.io/api/v1/account
curl -H "Authorization: Bearer YOUR_API_KEY" "https://socks5proxy.io/api/v1/proxies?country=us&protocol=socks5"

क्या मैं पर्यावरण चर का उपयोग करके प्रॉक्सी निर्दिष्ट कर सकता हूँ?

हां। cURL और कई कमांड लाइन टूल http_proxy, https_proxy, all_proxy पर्यावरण चर पढ़ते हैं। शेल में एक बार सेट करने पर उस शेल में चलने वाले cURL, wget, pip जैसे टूल समान प्रॉक्सी का उपयोग करते हैं। SOCKS5 के लिए all_proxy में socks5h:// पता डालना पर्याप्त है।

प्रॉक्सी से बाहर जाने वाले पतों को no_proxy में कॉमा से अलग करके लिखें। आंतरिक सर्वर या localhost तक प्रॉक्सी से बच सकते हैं।

export https_proxy="http://spx_user:spx_pass@198.51.100.23:8000"
export http_proxy="$https_proxy"
export no_proxy="localhost,127.0.0.1"
curl https://api.ipify.org

# SOCKS5 for every tool that reads all_proxy
export all_proxy="socks5h://spx_user:spx_pass@198.51.100.23:1080"

HTTP प्रॉक्सी और SOCKS5 प्रॉक्सी के परिणामों की तुलना कैसे करें?

एक ही IP के दो पोर्ट्स से एक ही एड्रेस को रिक्वेस्ट भेजकर रिस्पॉन्स IP और टाइम की तुलना करने पर पता चलता है कि आपके एनवायरनमेंट में कौन सा मेथड तेज है। ज्यादातर मामलों में समान होता है, लेकिन दूर के सर्वर या स्लो DNS रेजोल्यूशन वाले एनवायरनमेंट में अंतर हो सकता है।

रिस्पॉन्स IP दोनों तरीकों में समान होना चाहिए। अगर अलग आ रहा है, तो शायद आप दूसरी लाइन के पोर्ट को मिक्स कर रहे हैं, लिस्ट को दोबारा चेक करें।

for p in "http://spx_user:spx_pass@198.51.100.23:8000" "socks5h://spx_user:spx_pass@198.51.100.23:1080"; do
  curl -s -m 15 -x "$p" -w "  %{time_total}s\n" https://api.ipify.org
done

सर्वर IP ऑथराइजेशन के लिए IP कैसे चेक करें?

IP ऑथराइजेशन के लिए रजिस्टर करने वाला वैल्यू आपके सर्वर का पब्लिक IPv4 है जो इंटरनेट पर जाता है। प्रॉक्सी के बिना curl -4 https://api.ipify.org चलाने पर इस वैल्यू को तुरंत चेक कर सकते हैं। इस वैल्यू को डैशबोर्ड के IP ऑथराइजेशन फील्ड में रजिस्टर करने पर उस सर्वर से यूजरनेम और पासवर्ड के बिना कनेक्ट हो सकते हैं।

curl -4 -s https://api.ipify.org

HTTPS साइटों पर प्रॉक्सी डेटा को देख सकता है?

HTTP प्रॉक्सी के माध्यम से HTTPS पते का अनुरोध करने पर, cURL पहले CONNECT विधि के माध्यम से गंतव्य सर्वर तक एक टनल बनाता है और उसके बाद सीधे एन्क्रिप्टेड कनेक्शन स्थापित करता है। प्रॉक्सी केवल यह जानता है कि किस सर्वर से कनेक्ट करना है, और आने-जाने वाला डेटा एन्क्रिप्टेड होता है, इसलिए इसे देखा नहीं जा सकता। -v ऑप्शन के साथ चलाने पर CONNECT चरण और उसके बाद के एन्क्रिप्शन प्रक्रिया को चरण-दर-चरण देखा जा सकता है।

SOCKS5 के लिए भी यही है। प्रॉक्सी कनेक्शन को फॉरवर्ड करता है, और एन्क्रिप्शन cURL और टारगेट सर्वर के बीच होता है। इसलिए सर्टिफिकेट वेरिफिकेशन ऑप्शन (-k) का उपयोग न करना सुरक्षित है, क्योंकि प्रॉक्सी के माध्यम से भी टारगेट सर्वर का सर्टिफिकेट वेरिफाई होता है।

--socks5-hostname का उपयोग करने पर, जिस डोमेन नाम से आप कनेक्ट करना चाहते हैं, उसे भी प्रॉक्सी द्वारा रिज़ॉल्व किया जाता है, और आपके सर्वर के DNS अनुरोध रिकॉर्ड में भी नहीं दिखाई देता है।

curl -v -o /dev/null -x http://spx_user:spx_pass@198.51.100.23:8000 https://example.com/ 2>&1 | grep -E "CONNECT|HTTP/|SSL connection"

cURL एरर मैसेज कैसे पढ़ें?

Received HTTP code 407 from proxy after CONNECT प्राधिकरण विफलता है। उपयोगकर्ता नाम और पासवर्ड, या IP प्राधिकरण में पंजीकृत सर्वर IP की जांच करें। यदि पासवर्ड में @ या : है, तो इसे पते के अंदर न डालें, बल्कि -U या --proxy-user का उपयोग करें।

Failed to connect या Connection timed out आमतौर पर गलत पोर्ट या आपके सर्वर के फ़ायरवॉल द्वारा आउटगोइंग कनेक्शन को ब्लॉक करने के कारण होता है। HTTP पते के लिए HTTP पोर्ट और SOCKS5 के लिए SOCKS5 पोर्ट का उपयोग करें, और सुनिश्चित करें कि आउटगोइंग दिशा में पोर्ट खुला है। -v ऑप्शन जोड़ने से कनेक्शन प्रक्रिया चरण-दर-चरण दिखाई देगी, जिससे कारण का पता लगाना आसान होगा।

cURL प्रॉक्सी यूज़ गाइड, -x और SOCKS5 कनेक्शन वेरिफिकेशन | Socks5Proxy