प्रॉक्सी आवश्यक प्रोटोकॉल का समर्थन नहीं करता: क्या करें
आपने प्रॉक्सी सेट कर लिया, स्क्रिप्ट चला दी - और आपको "Protocol not supported" या "Connection refused" त्रुटि मिली। प्रोटोकॉल असंगति की समस्या जितनी लगती है उससे कहीं अधिक बार होती है। आइए देखें कि ऐसा क्यों होता है और प्रदाता बदले बिना इस समस्या को कैसे हल किया जाए।
प्रॉक्सी द्वारा उपयोग किए जाने वाले प्रोटोकॉल
समस्या को हल करने से पहले, प्रोटोकॉल के बीच का अंतर समझना महत्वपूर्ण है। प्रत्येक का अपना उपयोग क्षेत्र और सीमाएँ होती हैं।
| प्रोटोकॉल | डिफ़ॉल्ट पोर्ट | विशेषताएँ |
|---|---|---|
| HTTP | 80, 8080, 3128 | केवल HTTP ट्रैफ़िक, हेडर संशोधित कर सकता है |
| HTTPS (CONNECT) | 443, 8443 | HTTP CONNECT के माध्यम से टनलिंग, एन्क्रिप्शन |
| SOCKS4 | 1080 | TCP कनेक्शन, कोई प्रमाणीकरण नहीं, कोई UDP नहीं |
| SOCKS5 | 1080, 1081 | TCP और UDP, प्रमाणीकरण, प्रॉक्सी के माध्यम से DNS |
विशिष्ट टकराव:
- सेलेनियम और पपेटियर को HTTP/HTTPS की आवश्यकता होती है, लेकिन आपके पास SOCKS5 है
- टेलीग्राम बॉट SOCKS5 के माध्यम से काम करते हैं, लेकिन प्रॉक्सी केवल HTTP का समर्थन करता है
- टोरेंट क्लाइंट को UDP के साथ SOCKS5 की आवश्यकता होती है, लेकिन प्रॉक्सी SOCKS4 है
- गेमिंग एप्लिकेशन को UDP की आवश्यकता होती है, लेकिन HTTP प्रॉक्सी इसका समर्थन नहीं करता है
निदान: प्रॉक्सी प्रोटोकॉल का निर्धारण
यदि प्रदाता ने स्पष्ट रूप से प्रोटोकॉल निर्दिष्ट नहीं किया है या आपको संदेह है, तो प्रॉक्सी का स्वयं परीक्षण करें।
curl के माध्यम से जाँच
HTTP प्रोटोकॉल का परीक्षण:
# HTTP प्रॉक्सी
curl -x http://proxy_ip:port http://httpbin.org/ip
# प्रमाणीकरण के साथ
curl -x http://user:pass@proxy_ip:port http://httpbin.org/ip
SOCKS5 का परीक्षण:
# SOCKS5 प्रॉक्सी
curl -x socks5://proxy_ip:port http://httpbin.org/ip
# प्रॉक्सी के माध्यम से DNS के साथ SOCKS5 (socks5h)
curl -x socks5h://proxy_ip:port http://httpbin.org/ip
यदि कमांड प्रॉक्सी का IP पता लौटाता है, तो प्रोटोकॉल सही ढंग से पहचाना गया है। यदि Connection refused या Unsupported proxy त्रुटि आती है - तो प्रोटोकॉल गलत है।
Python के माध्यम से जाँच
import requests
proxy_ip = "proxy_ip:port"
# HTTP का परीक्षण
try:
r = requests.get("http://httpbin.org/ip",
proxies={"http": f"http://{proxy_ip}"},
timeout=10)
print(f"HTTP काम कर रहा है: {r.json()}")
except Exception as e:
print(f"HTTP काम नहीं कर रहा है: {e}")
# SOCKS5 का परीक्षण (pip install requests[socks] आवश्यक है)
try:
r = requests.get("http://httpbin.org/ip",
proxies={"http": f"socks5://{proxy_ip}"},
timeout=10)
print(f"SOCKS5 काम कर रहा है: {r.json()}")
except Exception as e:
print(f"SOCKS5 काम नहीं कर रहा है: {e}")
स्वचालित पहचान
प्रोटोकॉल को बदलने के लिए स्क्रिप्ट:
import requests
def detect_protocol(proxy_address):
protocols = ["http", "https", "socks4", "socks5", "socks5h"]
for proto in protocols:
try:
proxies = {
"http": f"{proto}://{proxy_address}",
"https": f"{proto}://{proxy_address}"
}
r = requests.get("http://httpbin.org/ip",
proxies=proxies, timeout=5)
if r.status_code == 200:
return proto
except:
continue
return None
result = detect_protocol("proxy_ip:port")
print(f"पहचाना गया प्रोटोकॉल: {result}")
HTTP को SOCKS और इसके विपरीत परिवर्तित करना
यदि प्रॉक्सी आपके सॉफ़्टवेयर के लिए आवश्यक प्रोटोकॉल का समर्थन नहीं करता है, तो स्थानीय कनवर्टर का उपयोग करें।
Privoxy: HTTP → SOCKS
Privoxy HTTP अनुरोधों को स्वीकार करता है और उन्हें SOCKS प्रॉक्सी के माध्यम से रूट करता है।
स्थापना:
# Ubuntu/Debian
sudo apt install privoxy
# macOS
brew install privoxy
# Windows - आधिकारिक वेबसाइट से डाउनलोड करें
कॉन्फ़िगरेशन (फ़ाइल /etc/privoxy/config):
# स्थानीय पोर्ट 8118 (HTTP) पर सुनें
listen-address 127.0.0.1:8118
# बाहरी SOCKS5 के माध्यम से रूट करें
forward-socks5 / socks_proxy_ip:1080 .
# प्रमाणीकरण के साथ
forward-socks5 / user:pass@socks_proxy_ip:1080 .
अब आपका सॉफ़्टवेयर 127.0.0.1:8118 से HTTP पर कनेक्ट होता है, और ट्रैफ़िक SOCKS5 के माध्यम से जाता है।
Gost: सार्वभौमिक कनवर्टर
Gost किसी भी प्रोटोकॉल रूपांतरण के लिए एक शक्तिशाली उपकरण है।
# इनपुट पर HTTP प्रॉक्सी → आउटपुट पर SOCKS5
gost -L http://:8080 -F socks5://socks_proxy_ip:1080
# इनपुट पर SOCKS5 → आउटपुट पर HTTP
gost -L socks5://:1080 -F http://http_proxy_ip:8080
# दोनों सिरों पर प्रमाणीकरण के साथ
gost -L http://local_user:local_pass@:8080 \
-F socks5://remote_user:remote_pass@proxy_ip:1080
Python में कनवर्टर
सरल कार्यों के लिए न्यूनतम कनवर्टर:
# pip install pproxy
# इनपुट पर HTTP, आउटपुट पर SOCKS5
pproxy -l http://:8080 -r socks5://proxy_ip:1080
# इनपुट पर SOCKS5, आउटपुट पर HTTP
pproxy -l socks5://:1080 -r http://proxy_ip:8080
स्थानीय टनलिंग सेटअप
कभी-कभी रूपांतरण पर्याप्त नहीं होता है - आपको एक पूर्ण टनल की आवश्यकता होती है।
HTTP प्रॉक्सी के माध्यम से SSH-टनल
यदि आपके पास एक SSH सर्वर और एक HTTP प्रॉक्सी है, तो आप SOCKS5 बना सकते हैं:
# HTTP प्रॉक्सी के माध्यम से localhost:1080 पर SOCKS5 बनाएं
ssh -D 1080 -o ProxyCommand="nc -X connect -x http_proxy:8080 %h %p" user@ssh_server
HTTPS के लिए Stunnel
यदि आपको HTTPS प्रॉक्सी की आवश्यकता है, लेकिन आपके पास केवल HTTP है:
# stunnel.conf
[https-proxy]
client = yes
accept = 127.0.0.1:8443
connect = http_proxy_ip:8080
protocol = connect
protocolHost = target_host:443
उपलब्ध प्रोटोकॉल के लिए सॉफ़्टवेयर कॉन्फ़िगरेशन
कभी-कभी कनवर्ट करने की तुलना में उपलब्ध प्रोटोकॉल के लिए सॉफ़्टवेयर को कॉन्फ़िगर करना आसान होता है।
विभिन्न प्रोटोकॉल के साथ सेलेनियम
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
# HTTP प्रॉक्सी (मानक तरीका)
options = Options()
options.add_argument('--proxy-server=http://proxy_ip:8080')
# SOCKS5 प्रॉक्सी
options.add_argument('--proxy-server=socks5://proxy_ip:1080')
# SOCKS5 के साथ फ़ायरफ़ॉक्स के लिए
from selenium.webdriver.firefox.options import Options as FirefoxOptions
profile = webdriver.FirefoxProfile()
profile.set_preference("network.proxy.type", 1)
profile.set_preference("network.proxy.socks", "proxy_ip")
profile.set_preference("network.proxy.socks_port", 1080)
profile.set_preference("network.proxy.socks_version", 5)
aiohttp के साथ SOCKS
# pip install aiohttp-socks
import aiohttp
from aiohttp_socks import ProxyConnector
async def fetch_with_socks():
connector = ProxyConnector.from_url('socks5://proxy_ip:1080')
async with aiohttp.ClientSession(connector=connector) as session:
async with session.get('http://httpbin.org/ip') as response:
return await response.json()
HTTP के माध्यम से टेलीग्राम बॉट
यदि टेलीग्राम लाइब्रेरी को SOCKS5 की आवश्यकता है, लेकिन आपके पास HTTP है:
# python-telegram-bot के साथ HTTP प्रॉक्सी
from telegram.ext import ApplicationBuilder
application = (
ApplicationBuilder()
.token("YOUR_TOKEN")
.proxy_url("http://proxy_ip:8080") # HTTP के साथ काम करता है
.build()
)
सलाह: कई आधुनिक लाइब्रेरी दोनों प्रोटोकॉल का समर्थन करती हैं। दस्तावेज़ीकरण देखें - शायद आपको केवल URL स्कीमा को
socks5://सेhttp://में बदलने की आवश्यकता है।
आवश्यक प्रोटोकॉल के साथ प्रॉक्सी कैसे चुनें
प्रोटोकॉल समस्याओं से बचने के लिए, पहले से आवश्यकताओं को परिभाषित करें।
संगतता मैट्रिक्स
| कार्य | अनुशंसित प्रोटोकॉल | क्यों |
|---|---|---|
| वेब स्क्रैपिंग | HTTP/HTTPS | व्यापक समर्थन, आसान सेटअप |
| ब्राउज़र ऑटोमेशन | HTTP या SOCKS5 | ब्राउज़र और फ्रेमवर्क पर निर्भर करता है |
| टेलीग्राम, डिस्कॉर्ड बॉट | SOCKS5 | लाइब्रेरी की आवश्यकताएँ |
| टोरेंट | UDP के साथ SOCKS5 | DHT और PEX UDP का उपयोग करते हैं |
| गेम्स, VoIP | UDP के साथ SOCKS5 | कम विलंबता, UDP ट्रैफ़िक |
| API अनुरोध | HTTP/HTTPS | REST API HTTP के माध्यम से काम करता है |
प्रॉक्सी चुनते समय किन बातों पर ध्यान दें
- समर्थित प्रोटोकॉल की सूची - स्पष्ट रूप से निर्दिष्ट किया जाना चाहिए
- स्विचिंग की क्षमता - कुछ प्रदाता एक ही IP के लिए विभिन्न पोर्ट/प्रोटोकॉल तक पहुंच प्रदान करते हैं
- SOCKS5 के लिए UDP समर्थन - सभी SOCKS5 प्रॉक्सी UDP का समर्थन नहीं करते हैं
- विभिन्न भाषाओं और उपकरणों के लिए सेटअप उदाहरण - दस्तावेज़ीकरण
आवासीय प्रॉक्सी आमतौर पर HTTP/HTTPS और SOCKS5 दोनों का समर्थन करते हैं, जो अधिकांश संगतता समस्याओं को हल करता है। डेटासेंटर प्रॉक्सी अक्सर HTTP/HTTPS तक ही सीमित होते हैं।
खरीदने से पहले चेकलिस्ट
- निर्धारित करें कि आपके सॉफ़्टवेयर को किस प्रोटोकॉल की आवश्यकता है
- जांचें कि क्या UDP की आवश्यकता है (गेम, टोरेंट, VoIP)
- प्रदाता से आवश्यक प्रोटोकॉल समर्थन की पुष्टि करें
- संगतता जांचने के लिए परीक्षण पहुंच का अनुरोध करें
- एक बैकअप योजना तैयार रखें - एक स्थानीय कनवर्टर
निष्कर्ष
प्रोटोकॉल असंगति एक हल करने योग्य समस्या है। अधिकांश मामलों में, Privoxy या Gost जैसे स्थानीय कनवर्टर पर्याप्त होते हैं। दीर्घकालिक परियोजनाओं के लिए, आवश्यक प्रोटोकॉल समर्थन वाले प्रॉक्सी का चयन करना अधिक फायदेमंद होता है।
प्रोटोकॉल चयन में लचीलेपन की आवश्यकता वाले कार्यों के लिए, मल्टी-प्रोटोकॉल एक्सेस वाले आवासीय प्रॉक्सी उपयुक्त हैं - अधिक जानकारी proxycove.com पर देखें।