डेवलपर
क्लाइंट को किस प्रोटोकॉल पर सेट करें, और प्रॉक्सी स्विच होने के बाद उसमें socks5 या socks5h में से कौन-सी स्कीम लिखें।
SOCKS5 ट्रांसपोर्ट-स्तर का प्रॉक्सी प्रोटोकॉल है: यह आपकी ओर से कनेक्शन खोलता है और बाइट्स आगे बढ़ाता है, उनके अंदर की चीज़ को पढ़े या बदले बिना। हमारा बेचा हर स्टैटिक ISP प्रॉक्सी उसी ऑर्डर पर HTTP और SOCKS5 के बीच स्विच किया जा सकता है जो आपके पास पहले से है।
प्रोटोकॉल बदलना कोई अलग प्रोडक्ट नहीं है: आप उसी प्रॉक्सी को स्विच करते हैं जो आपके पास पहले से है, डैशबोर्ड या API से, और ऑर्डर कनेक्ट करने के लिए नए पोर्ट और क्रेडेंशियल के साथ अपडेट हो जाता है।
संक्षेप में: SOCKS5 एक प्रॉक्सी प्रोटोकॉल है, पते का कोई प्रकार नहीं: यह TCP कनेक्शन को उसके अंदर की चीज़ पढ़े या बदले बिना आगे पहुँचाता है। ProxyJam का बेचा हर स्टैटिक रेज़िडेंशियल (ISP) प्रॉक्सी HTTP चलाता है, जो HTTPS भी ले जाता है, या SOCKS5, और आप इनके बीच उसी ऑर्डर पर स्विच करते हैं जो आपके पास पहले से है; स्विच के बाद, ऑर्डर में दिखे पोर्ट और क्रेडेंशियल से कनेक्ट करें।
SOCKS5 वह सब ले जाता है जिसके लिए आपका क्लाइंट TCP कनेक्शन खोल सकता है, उस ट्रैफ़िक समेत जिसे HTTP प्रॉक्सी आगे नहीं भेज सकती, और यह बाइट्स को बिना छुए गुज़ार देता है। इसीलिए यह डेटाबेस क्लाइंट, SSH सेशन, या HTTP न समझने वाले किसी भी टूल के लिए स्वाभाविक चुनाव है। यह नहीं बदलता कि पता क्या है। प्रॉक्सी प्रोटोकॉल आपके क्लाइंट और प्रॉक्सी के बीच बोला जाता है; दूसरे छोर की साइट प्रॉक्सी के पते से आया कनेक्शन देखती है, साथ में वे हेडर जो किसी HTTP प्रॉक्सी ने जोड़ना चुना। इसलिए पूछने लायक सवाल यह नहीं कि कौन-सा प्रोटोकॉल खरीदें। सवाल यह है कि पता किस नेटवर्क का है, और वहाँ जवाब है एक नामित इंटरनेट प्रदाता, अमेरिका में उनकी संख्या 19 है।
SOCKS संस्करण 5 1996 में RFC 1928 के रूप में प्रकाशित हुआ, एक फ़ायरवॉल पार करने वाला प्रोटोकॉल जिसने SOCKS संस्करण 4 को UDP, ऑथेंटिकेशन तरीकों के एक ढाँचे, और डोमेन नाम या IPv6 पते के रूप में दिए गंतव्यों से बढ़ाया। क्लाइंट अपने समर्थित ऑथेंटिकेशन तरीके पेश करता है और सर्वर एक चुनता है; फिर क्लाइंट एक बाहरी कनेक्शन (CONNECT), एक सुनने वाला पोर्ट (BIND) या एक UDP रिले (UDP ASSOCIATE) माँगता है। यूज़रनेम और पासवर्ड लॉगिन का अपना छोटा स्पेसिफ़िकेशन है, RFC 1929, जो पासवर्ड सादे टेक्स्ट में भेजता है, इसलिए जहाँ ज़रूरी हो वहाँ टनल के अंदर का ट्रैफ़िक एन्क्रिप्टेड रखें।
डोमेन नाम का विकल्प ही वह चीज़ है जिसके बीच socks5 और socks5h स्कीमें चुनाव करती हैं। curl का मैनुअल --socks5 को प्रॉक्सी इस्तेमाल करने वाला बताता है “but resolve the hostname locally” (लेकिन होस्टनेम स्थानीय रूप से रिज़ॉल्व करें), और --socks5-hostname को वह विकल्प जो “the proxy resolve the hostname” (प्रॉक्सी को होस्टनेम रिज़ॉल्व करने) देता है। प्रॉक्सी URL में, socks5:// पहला बर्ताव देता है और socks5h:// दूसरा, जैसा Everything curl की तालिका बताती है। HTTPS ले जाने वाली HTTP प्रॉक्सी को आमतौर पर इसके बजाय नाम मिलता है: CONNECT अनुरोध गंतव्य होस्ट और पोर्ट का नाम देता है, और प्रॉक्सी उस तक टनल खोलती है (RFC 9110, खंड 9.3.6)। UDP रिले SOCKS5 स्पेसिफ़िकेशन का हिस्सा है, लेकिन उस पर अलग-अलग इम्प्लीमेंटेशन अलग हैं; नीचे का FAQ बताता है कि हमारी प्रॉक्सी पर इसका क्या मतलब है।
अगर आपके पास किसी सर्वर का SSH लॉगिन पहले से है, तो आपके पास बिना खरीदे एक SOCKS5 प्रॉक्सी है। ssh -N -D 1080 user@server वह सेट करता है जिसे OpenBSD ssh मैनुअल स्थानीय “dynamic” (डायनैमिक) एप्लिकेशन-स्तर पोर्ट फ़ॉरवर्डिंग कहता है: ssh आपकी मशीन पर पोर्ट 1080 पर सुनता है और “will act as a SOCKS server” (SOCKS सर्वर की तरह काम करेगा), हर कनेक्शन को एन्क्रिप्टेड SSH चैनल पर ले जाकर रिमोट मशीन से खोलता है। -N इसे सिर्फ़ फ़ॉरवर्डिंग तक रखता है, बिना रिमोट शेल के। किसी क्लाइंट को socks5h://127.0.0.1:1080 पर सेट करें और उसका ट्रैफ़िक सर्वर से निकलेगा।
खरीदे गए SOCKS5 प्रॉक्सी से फ़र्क़ इसमें है कि कनेक्शन कहाँ से निकलता है। SSH टनल से, दूसरे छोर की साइट SSH सर्वर का पता और उस सर्वर का नेटवर्क देखती है, जो किराए के सर्वर के लिए आमतौर पर किसी होस्टिंग कंपनी का होता है। SSH आपके और सर्वर के बीच के हिस्से को एन्क्रिप्ट करता है; सर्वर से साइट तक, ट्रैफ़िक वैसा ही रहता है जैसा वह पहले से था। SOCKS5 पर स्विच की गई ProxyJam प्रॉक्सी किसी नामित इंटरनेट प्रदाता के नेटवर्क के पते से निकलती है, जो चेकआउट पर देश और कैरियर के हिसाब से चुना गया, और आप उससे सीधे ऑर्डर में दिए पोर्ट और क्रेडेंशियल से कनेक्ट करते हैं, बीच में कोई SSH नहीं और चलाने के लिए कोई अपना सर्वर नहीं।
इसलिए दोनों अलग-अलग सवालों का जवाब देते हैं। SSH पर टनल ट्रैफ़िक को उस मशीन से बाहर भेजता है जो पहले से आपके नियंत्रण में है। ISP पते पर SOCKS5 प्रॉक्सी उस काम के लिए है जहाँ निकास पता खुद मायने रखता है, यानी उसका लुकअप कौन-सा नेटवर्क दिखाता है।
तीन छोटे आदान-प्रदान, जिनमें से किसी में भी प्रॉक्सी को आपका ट्रैफ़िक समझना नहीं पड़ता।
आपका क्लाइंट प्रॉक्सी का अभिवादन करता है और ऑथेंटिकेशन तय करता है। वह अपने समर्थित तरीके पेश करता है; प्रॉक्सी वह तरीका बताती है जो उसे चाहिए। हमारे पतों पर यह यूज़रनेम और पासवर्ड है, या कुछ भी नहीं, अगर आपने इसके बजाय अपना IP व्हाइटलिस्ट किया है।
आपका क्लाइंट एक गंतव्य माँगता है। एक होस्ट और एक पोर्ट, जो या तो पते के रूप में भेजे जाते हैं या नाम के रूप में। नाम भेजना दिलचस्प मामला है: प्रॉक्सी उसे रिज़ॉल्व करती है, इसलिए लुकअप आपके नेटवर्क से नहीं, प्रॉक्सी के नेटवर्क से जाता है।
उसके बाद प्रॉक्सी बस बाइट्स आगे बढ़ाती है। वह पेलोड को पार्स नहीं करती, हेडर नहीं जोड़ती, और यह नहीं जानती कि वह वेब पेज ले जा रही है, डेटाबेस सेशन या मेल ट्रांसफ़र। यही उदासीनता HTTP प्रॉक्सी के बजाय SOCKS5 चुनने की पूरी वजह है।
| HTTP प्रॉक्सी | CONNECT के ज़रिए HTTPS | SOCKS5 | |
|---|---|---|---|
| यह क्या ले जा सकता है | सिर्फ़ HTTP अनुरोध | नामित होस्ट और पोर्ट तक एक TCP टनल | कोई भी TCP स्ट्रीम |
| क्या प्रॉक्सी पेलोड पढ़ती है | हाँ: वह अनुरोध को पार्स करती है | नहीं, टनल खुलने के बाद | नहीं, किसी भी समय |
| क्या यह आपके हेडर बदल सकता है | हाँ: वह उन्हें आगे भेजती है और अपने हेडर जोड़ सकती है, जैसे Via | नहीं, टनल खुलने के बाद | नहीं: इसमें हेडर की कोई अवधारणा ही नहीं |
| होस्टनेम कहाँ रिज़ॉल्व होता है | प्रॉक्सी पर | प्रॉक्सी पर: CONNECT होस्ट का नाम देता है | आपकी मर्ज़ी, किसी भी छोर पर |
| आम क्लाइंट समर्थन | HTTP टूलिंग में हर जगह | HTTP टूलिंग में हर जगह | कमांड-लाइन टूल में आम; कुछ लाइब्रेरी को एक अतिरिक्त पैकेज चाहिए |
| किसके लिए सबसे उपयुक्त | सादे वेब अनुरोध | सामान्य HTTPS ब्राउज़िंग और स्क्रेपिंग | गैर-वेब प्रोटोकॉल और मिला-जुला ट्रैफ़िक |
क्लाइंट को किस प्रोटोकॉल पर सेट करें, और प्रॉक्सी स्विच होने के बाद उसमें socks5 या socks5h में से कौन-सी स्कीम लिखें।
क्लाइंट को किस प्रोटोकॉल पर सेट करें, और जो प्रॉक्सी आपके पास पहले से है उसे डैशबोर्ड या API से कैसे स्विच करें।
डैशबोर्ड से या ऑर्डर पर एक API कॉल से; सिर्फ़ क्लाइंट बदलना काफ़ी नहीं है। स्विच के दौरान प्रॉक्सी थोड़ी देर के लिए उपलब्ध नहीं रह सकती।
HTTP पर जिन मानों से आप कनेक्ट करते थे, उन्हें दोबारा इस्तेमाल न करें।
होस्टनेम प्रॉक्सी से रिज़ॉल्व कराने के लिए socks5h://USERNAME:PASSWORD@HOST:PORT, या उन्हें अपनी तरफ़ रिज़ॉल्व करने के लिए socks5://।
curl -x socks5h://USERNAME:PASSWORD@HOST:PORT https://example.com/।
Python में, socks5h:// प्रॉक्सी URL काम करे, इससे पहले requests को उसका SOCKS एक्स्ट्रा चाहिए, pip install requests[socks]।
import requests
# HOST, PORT, USERNAME, PASSWORD come with your order (dashboard or API)
proxy = "http://USERNAME:PASSWORD@HOST:PORT"
proxies = {
"http": proxy,
"https": proxy,
}
response = requests.get(
"https://example.com/",
proxies=proxies,
)
print(response.status_code)
# HOST, PORT, USERNAME, PASSWORD come with your order (dashboard or API)
curl -x http://USERNAME:PASSWORD@HOST:PORT \
https://example.com/
import axios from "axios";
import { HttpsProxyAgent } from "https-proxy-agent";
// HOST, PORT, USERNAME, PASSWORD come with your order (dashboard or API)
const proxy = "http://USERNAME:PASSWORD@HOST:PORT";
const agent = new HttpsProxyAgent(proxy);
const response = await axios.get(
"https://example.com/",
{
httpAgent: agent,
httpsAgent: agent,
},
);
console.log(response.status);
package main
import (
"fmt"
"net/http"
"net/url"
)
func main() {
// HOST, PORT, USERNAME, PASSWORD come with your order (dashboard or API)
proxy, _ := url.Parse(
"http://USERNAME:PASSWORD@HOST:PORT")
client := &http.Client{Transport: &http.Transport{
Proxy: http.ProxyURL(proxy),
}}
res, _ := client.Get("https://example.com/")
fmt.Println(res.Status)
}
नीचे के सैंपल HTTP पर कनेक्ट करते हैं, वह प्रोटोकॉल जिस पर ऑर्डर शुरू होता है। SOCKS5 इस्तेमाल करने के लिए, पहले खुद प्रॉक्सी को स्विच करें, डैशबोर्ड से या एक API कॉल से; फिर ऑर्डर वह पोर्ट और क्रेडेंशियल दिखाता है जो अब से इस्तेमाल करने हैं। क्लाइंट में, उसी पोर्ट और उन्हीं क्रेडेंशियल के साथ स्कीम को socks5 में बदलें, या socks5h में अगर आप चाहते हैं कि होस्टनेम प्रॉक्सी रिज़ॉल्व करे। इसके लिए Python को requests[socks] चाहिए, और Node.js को HTTPS एजेंट की जगह एक SOCKS एजेंट।
नीचे के जवाब वे शर्तें बताते हैं जिन पर हम बेचते हैं, और ऐसा करने वाला हर जवाब उस दस्तावेज़ से लिंक होता है जो हमें उससे बाँधता है।
SOCKS5 एक प्रॉक्सी प्रोटोकॉल है, जो RFC 1928 में परिभाषित है और ट्रांसपोर्ट लेयर पर काम करता है। आपका क्लाइंट प्रॉक्सी से किसी होस्ट और पोर्ट का कनेक्शन खोलने को कहता है, प्रॉक्सी उसे खोलती है, और उसके बाद वह बाइट्स को दोनों दिशाओं में उनका अर्थ लगाए बिना आगे बढ़ाती है। क्योंकि वह जो ले जा रही है उसे कभी पार्स नहीं करती, वह वेब ट्रैफ़िक तक सीमित नहीं है: TCP पर चलने वाली कोई भी चीज़ उससे गुज़र सकती है।
HTTP प्रॉक्सी HTTP समझती है। वह अनुरोध लाइन और हेडर पढ़ती है, और उन्हें जोड़ने, हटाने या बदलने के लिए स्वतंत्र है, इसीलिए कुछ प्रॉक्सी चुपचाप ऐसे हेडर में अपनी मौजूदगी बता देती हैं जो आपने सेट नहीं किया। SOCKS5 में हेडर की कोई अवधारणा ही नहीं: वह एक गंतव्य और एक बाइट स्ट्रीम देखता है। अगर आपका ट्रैफ़िक HTTP नहीं है, या आप चाहते हैं कि बीच में कुछ भी उसे संपादित न कर सके, तो SOCKS5 चुनें।
नहीं, और HTTP प्रॉक्सी भी नहीं करती। SOCKS5 प्रॉक्सी के सामने आपका ऑथेंटिकेशन करता है और फिर बाइट्स आगे बढ़ाता है। स्पेसिफ़िकेशन किसी ऑथेंटिकेशन तरीके को अपनी सुरक्षा जोड़ने देता है, लेकिन यूज़रनेम और पासवर्ड ऑथेंटिकेशन (RFC 1929) पासवर्ड को सादे टेक्स्ट में भेजता है और उसके बाद कुछ भी सुरक्षित नहीं करता। अगर अंदर का ट्रैफ़िक HTTPS या SSH है, तो वह पहले से एंड-टू-एंड एन्क्रिप्टेड है, और प्रॉक्सी उसे नहीं पढ़ सकती। अगर अंदर का ट्रैफ़िक सादा टेक्स्ट है, तो वह सादा टेक्स्ट ही रहता है, इसलिए SOCKS5 को एन्क्रिप्शन लेयर न मानें।
यह DNS लुकअप की जगह बदलता है। socks5 के साथ, आपका क्लाइंट होस्टनेम को स्थानीय रूप से रिज़ॉल्व करता है और प्रॉक्सी से नतीजे वाले पते से कनेक्ट करने को कहता है। socks5h के साथ, आपका क्लाइंट नाम भेजता है और प्रॉक्सी उसे रिज़ॉल्व करती है। यह दो तरह से मायने रखता है: आपके अपने रिज़ॉल्वर को कभी पता नहीं चलता कि आप किन होस्ट पर जा रहे हैं, और आपको वह जवाब मिलता है जो प्रॉक्सी के नेटवर्क को मिलता है, जो जियो के हिसाब से बदलने वाले होस्टनेम के लिए अक्सर वह जवाब नहीं होता जो आपको घर पर मिलता।
UDP ASSOCIATE RFC 1928 में है; कोई खास क्लाइंट या सर्वर इसे लागू करता है या नहीं, यह अलग-अलग होता है, इसलिए मान लेने के बजाय दोनों छोर जाँचें। हमने अपनी प्रॉक्सी के लिए UDP समर्थन प्रकाशित नहीं किया है, इसलिए TCP की योजना बनाएँ, और UDP पर निर्भर कुछ भी बनाने से पहले सपोर्ट से पूछें।
नहीं। आप उसी प्रॉक्सी को जो आपके पास पहले से है, HTTP, जो HTTPS भी ले जाता है, और SOCKS5 के बीच स्विच करते हैं: डैशबोर्ड से, या उसी ऑर्डर पर API की एक कॉल से। यह सिर्फ़ क्लाइंट की सेटिंग नहीं है: स्विच प्रॉक्सी पर होता है, ऑर्डर नए प्रोटोकॉल, पोर्ट और क्रेडेंशियल के साथ अपडेट होता है, और इस दौरान प्रॉक्सी थोड़ी देर के लिए उपलब्ध नहीं रह सकती। प्रॉक्सी आपकी भुगतान की गई पूरी अवधि आपकी रहती है, अगर वह जवाब देना बंद कर दे या आपके बताए लक्ष्य पर ब्लॉक हो तो उसे मुफ़्त बदला जाता है, प्रति कैलेंडर माह ऑर्डर के 20 % तक, और पहले ऑर्डर पर अधिकतम 10 IP तक का 24 घंटे का रिफ़ंड है, जो परखने से रद्द नहीं होता। सेवा की शर्तें
--socks5 होस्टनेम को स्थानीय रूप से रिज़ॉल्व करता है, --socks5-hostname प्रॉक्सी को उसे रिज़ॉल्व करने देता हैsocks5:// और socks5h://, और कौन-सा छोर होस्टनेम रिज़ॉल्व करता है-D स्थानीय डायनैमिक पोर्ट फ़ॉरवर्डिंग सेट करता है, जिसमें ssh SOCKS4 और SOCKS5 सर्वर की तरह काम करता है, और -N कोई रिमोट कमांड चलाए बिना पोर्ट फ़ॉरवर्ड करता है