WebSocket एक सामान्य HTTP अनुरोध नहीं है। प्रारंभिक "हैंडशेक" के बाद कनेक्शन खुला रहता है, और डेटा दोनों दिशाओं में निरंतर प्रवाह में चलता है। यही कारण है कि मानक HTTP प्रॉक्सी अक्सर WS कनेक्शन को काट देते हैं या उन्हें संभालने में असमर्थ होते हैं। इस लेख में, हम समझेंगे कि WebSocket ट्रैफ़िक को सही तरीके से प्रॉक्सी कैसे करें: कौन से प्रॉक्सी उपयुक्त हैं, उन्हें कैसे सेट करें और कौन सी गलतियाँ अक्सर होती हैं।
WebSocket कैसे काम करता है और यह प्रॉक्सी के लिए क्यों जटिल है
समस्या को समझने के लिए, हमें तंत्र को समझना होगा। WebSocket कनेक्शन एक सामान्य HTTP अनुरोध के रूप में शुरू होता है - क्लाइंट Upgrade: websocket और Connection: Upgrade हेडर भेजता है। सर्वर 101 Switching Protocols कोड के साथ प्रतिक्रिया करता है - और इस बिंदु से कनेक्शन HTTP नहीं रहता। यह एक स्थायी द्विदिश चैनल में बदल जाता है, जिसके माध्यम से डेटा फ्रेम में प्रवाहित होता है।
मानक HTTP/1.1 प्रॉक्सी, जो केवल अनुरोधों और उत्तरों को भेजने में सक्षम है, एक समस्या का सामना करता है: यह नहीं जानता कि 101 उत्तर के बाद कनेक्शन के साथ क्या करना है। कई प्रॉक्सी सर्वर इस समय कनेक्शन को बंद कर देते हैं या 502 Bad Gateway त्रुटि लौटाते हैं। अन्य कनेक्शन को बनाए रखते हैं, लेकिन WebSocket फ्रेम को सही तरीके से भेजने में असमर्थ होते हैं, जिससे डेटा के टूटने या विकृति होती है।
यहाँ WebSocket और सामान्य HTTP के बीच प्रॉक्सीकरण के दृष्टिकोण से मुख्य अंतर हैं:
| पैरामीटर | HTTP | WebSocket |
|---|---|---|
| कनेक्शन का प्रकार | अनुरोध → उत्तर → बंद करना | स्थायी, द्विदिश |
| जीवन काल | सेकंड (एक अनुरोध) | मिनट, घंटे, दिन |
| डेटा का प्रवर्तक | केवल क्लाइंट | क्लाइंट और सर्वर |
| हैंडशेक के बाद प्रोटोकॉल | HTTP | स्वयं का (RFC 6455) |
| पोर्ट | 80, 443 | 80 (WS), 443 (WSS) |
हैंडशेक के बाद प्रोटोकॉल के परिवर्तन के कारण अधिकांश सरल प्रॉक्सी समाधान WebSocket के साथ काम नहीं करते हैं। या तो आपको एक प्रॉक्सी का उपयोग करना होगा जो स्पष्ट रूप से टनलिंग का समर्थन करता है, या SOCKS5 का उपयोग करना होगा - एक प्रोटोकॉल जो अधिक निचले स्तर पर काम करता है और ट्रैफ़िक की सामग्री को नहीं समझता है।
कौन से प्रकार के प्रॉक्सी WebSocket का समर्थन करते हैं
सभी प्रॉक्सी WebSocket के लिए समान रूप से उपयोगी नहीं हैं। आइए प्रत्येक प्रकार पर चर्चा करें:
| प्रॉक्सी का प्रकार | WS का समर्थन | मैकेनिज्म | जटिलता |
|---|---|---|---|
| HTTP प्रॉक्सी | ⚠️ आंशिक | CONNECT टनल के माध्यम से | मध्यम |
| HTTPS प्रॉक्सी | ✅ हाँ | CONNECT + TLS | मध्यम |
| SOCKS4 | ⚠️ सीमित | TCP टनल बिना प्रमाणीकरण | कम |
| SOCKS5 | ✅ पूर्ण | पारदर्शी TCP/UDP | कम |
| पारदर्शी प्रॉक्सी | ❌ नहीं | केवल HTTP | — |
निष्कर्ष: WebSocket कार्यों के लिए SOCKS5 सबसे अच्छा विकल्प है। यह प्रोटोकॉल परिवहन स्तर पर काम करता है और बस TCP कनेक्शन को टनल करता है, ट्रैफ़िक की सामग्री में नहीं जाता। इसे यह परवाह नहीं है कि अंदर HTTP, WebSocket, SSH या कुछ और चल रहा है। HTTP प्रॉक्सी भी WS के साथ काम कर सकते हैं, लेकिन केवल CONNECT विधि के माध्यम से - और यहाँ कुछ बारीकियाँ हैं, जिन पर हम नीचे चर्चा करेंगे।
CONNECT विधि: HTTP प्रॉक्सी कैसे WebSocket को टनल करता है
HTTP विधि CONNECT एक विशेष तंत्र है, जो HTTP प्रॉक्सी को लक्षित सर्वर तक "अंधा" टनल बनाने की अनुमति देता है। प्रॉक्सी टनल के अंदर ट्रैफ़िक का विश्लेषण नहीं करता है, बल्कि बस बाइट्स को पुनर्निर्देशित करता है। इसी तरह HTTPS HTTP प्रॉक्सी के माध्यम से काम करता है - और इसी तरह WebSocket को प्रॉक्सी किया जा सकता है।
प्रक्रिया इस प्रकार है:
- क्लाइंट प्रॉक्सी को अनुरोध भेजता है:
CONNECT example.com:443 HTTP/1.1 - प्रॉक्सी
example.com:443के साथ TCP कनेक्शन स्थापित करता है - प्रॉक्सी क्लाइंट को जवाब देता है:
200 Connection Established - इस बिंदु से प्रॉक्सी बस बाइट्स को आगे और पीछे भेजता है - उन्हें समझे बिना
- क्लाइंट सीधे सर्वर के साथ टनल के माध्यम से TLS-हैंडशेक करता है
- फिर - TLS के ऊपर WebSocket-हैंडशेक
मुख्य सीमा: CONNECT विधि आमतौर पर केवल पोर्ट 443 के लिए अनुमति दी जाती है। यदि आपका WebSocket सर्वर गैर-मानक पोर्ट (जैसे 8080 या 9000) पर चल रहा है, तो प्रॉक्सी कनेक्शन को अस्वीकार कर सकता है। इस मामले में SOCKS5 अधिक पसंदीदा है - इसमें पोर्ट पर कोई प्रतिबंध नहीं है।
यह भी महत्वपूर्ण है कि कुछ कॉर्पोरेट HTTP प्रॉक्सी (जैसे, मानक कॉन्फ़िगरेशन में Squid) कुछ पोर्ट के लिए CONNECT विधि को स्पष्ट रूप से अवरुद्ध करते हैं या प्रमाणीकरण की आवश्यकता होती है। यदि आप व्यावसायिक प्रॉक्सी प्रदाताओं के साथ काम कर रहे हैं, तो उनमें से अधिकांश बिना किसी प्रतिबंध के CONNECT का समर्थन करते हैं।
# CURL के माध्यम से CONNECT अनुरोध का उदाहरण (जांच के लिए)
curl -v -x http://proxy_host:proxy_port \
--proxytunnel \
https://echo.websocket.org
# यदि प्रॉक्सी CONNECT का समर्थन करता है - आप देखेंगे:
# * CONNECT टनल स्थापित, प्रतिक्रिया 200
SOCKS5 और WebSocket: यह सबसे अच्छा विकल्प क्यों है
SOCKS5 एक प्रॉक्सीकरण प्रोटोकॉल है जो TCP/UDP कनेक्शनों के स्तर पर काम करता है। HTTP प्रॉक्सी के विपरीत, SOCKS5 को अंदर चलने वाले एप्लिकेशन प्रोटोकॉल के बारे में कुछ नहीं पता है। यह बस क्लाइंट और लक्षित सर्वर के बीच एक टनल बनाता है, और बस। यह इसे WebSocket के लिए कई कारणों से आदर्श बनाता है:
- प्रोटोकॉल पर कोई प्रतिबंध नहीं: SOCKS5 किसी भी TCP ट्रैफ़िक को टनल करता है, जिसमें WS, WSS, SSH, FTP आदि शामिल हैं।
- पोर्ट पर कोई प्रतिबंध नहीं: यह किसी भी पोर्ट के साथ काम करता है, केवल 443 या 80 नहीं
- प्रोटोकॉल परिवर्तन पर कोई टूटना नहीं: प्रॉक्सी HTTP से WebSocket में संक्रमण को "नहीं देखता"
- प्रमाणीकरण का समर्थन: SOCKS5 लॉगिन/पासवर्ड का समर्थन करता है, जो व्यावसायिक प्रॉक्सी के लिए सुविधाजनक है
- UDP का समर्थन: यदि आपका एप्लिकेशन WebRTC या WS के साथ UDP का उपयोग करता है - SOCKS5 इसे संभाल लेगा
लगभग सभी आधुनिक पुस्तकालय जो WebSocket के साथ काम करते हैं SOCKS5 का समर्थन करते हैं या तो सीधे या अतिरिक्त पैकेज के माध्यम से। नीचे हम Python और Node.js के लिए विशिष्ट उदाहरण देखेंगे।
💡 SOCKS5 कब चुनें, और HTTP CONNECT कब?
SOCKS5 का उपयोग करें, यदि: गैर-मानक पोर्ट, UDP का समर्थन चाहिए, न्यूनतम सेटिंग्स चाहते हैं।
HTTP CONNECT का उपयोग करें, यदि: प्रॉक्सी प्रदाता SOCKS5 का समर्थन नहीं करता है, या आप कॉर्पोरेट प्रॉक्सी के माध्यम से काम कर रहे हैं।
कोड के उदाहरण: Python में प्रॉक्सी के माध्यम से WebSocket
Python के लिए कुछ परिदृश्यों पर विचार करें। Python में WebSocket के लिए सबसे लोकप्रिय पुस्तकालय websockets और websocket-client हैं।
विकल्प 1: HTTP प्रॉक्सी के माध्यम से websocket-client
import websocket
# HTTP प्रॉक्सी सेटिंग्स
proxy_host = "proxy.example.com"
proxy_port = 8080
proxy_user = "username"
proxy_pass = "password"
ws = websocket.WebSocket()
ws.connect(
"wss://echo.websocket.org",
http_proxy_host=proxy_host,
http_proxy_port=proxy_port,
http_proxy_auth=(proxy_user, proxy_pass),
proxy_type="http" # या "socks5"
)
ws.send("Hello, WebSocket!")
result = ws.recv()
print(f"प्राप्त: {result}")
ws.close()
विकल्प 2: SOCKS5 के माध्यम से websocket-client
import websocket
# SOCKS5 के लिए पैकेज की आवश्यकता है: pip install PySocks
ws = websocket.WebSocket()
ws.connect(
"wss://echo.websocket.org",
http_proxy_host="socks5_proxy.example.com",
http_proxy_port=1080,
http_proxy_auth=("username", "password"),
proxy_type="socks5"
)
ws.send("परीक्षण संदेश")
print(ws.recv())
ws.close()
विकल्प 3: websockets पुस्तकालय (asyncio) के माध्यम से SOCKS5
websockets (asyncio) पुस्तकालय में प्रॉक्सी का अंतर्निहित समर्थन नहीं है, इसलिए हम टनल बनाने के लिए python-socks का उपयोग करते हैं:
# pip install websockets python-socks[asyncio]
import asyncio
import websockets
from python_socks.async_.asyncio import Proxy
async def connect_via_socks5():
proxy = Proxy.from_url("socks5://username:[email protected]:1080")
# प्रॉक्सी के माध्यम से TCP कनेक्शन बनाना
sock = await proxy.connect(
dest_host="echo.websocket.org",
dest_port=443
)
# websockets में सॉकेट पास करें
async with websockets.connect(
"wss://echo.websocket.org",
sock=sock
) as ws:
await ws.send("SOCKS5 के माध्यम से नमस्ते!")
response = await ws.recv()
print(f"उत्तर: {response}")
asyncio.run(connect_via_socks5())
विकल्प 4: PySocks के माध्यम से वैश्विक पैच
यदि आप प्रत्येक कॉल को बदलने के बिना Python एप्लिकेशन के सभी ट्रैफ़िक को SOCKS5 के माध्यम से निर्देशित करना चाहते हैं - तो socks.setdefaultproxy() का उपयोग करें:
# pip install PySocks
import socks
import socket
import websocket
# वैश्विक रूप से सॉकेट को पैच करें
socks.set_default_proxy(
socks.SOCKS5,
"proxy.example.com",
1080,
username="user",
password="pass"
)
socket.socket = socks.socksocket
# अब सभी कनेक्शन SOCKS5 के माध्यम से जाते हैं
ws = websocket.WebSocket()
ws.connect("wss://echo.websocket.org")
ws.send("वैश्विक SOCKS5 प्रॉक्सी!")
print(ws.recv())
ws.close()
कोड के उदाहरण: Node.js में प्रॉक्सी के माध्यम से WebSocket
Node.js पारिस्थितिकी तंत्र में WebSocket के लिए सबसे लोकप्रिय पुस्तकालय ws है। HTTP/SOCKS5 के माध्यम से प्रॉक्सीकरण के लिए https-proxy-agent या socks-proxy-agent पैकेज का उपयोग किया जाता है।
विकल्प 1: HTTP CONNECT प्रॉक्सी के माध्यम से WSS
// npm install ws https-proxy-agent
const WebSocket = require('ws');
const { HttpsProxyAgent } = require('https-proxy-agent');
const proxyUrl = 'http://username:[email protected]:8080';
const agent = new HttpsProxyAgent(proxyUrl);
const ws = new WebSocket('wss://echo.websocket.org', { agent });
ws.on('open', () => {
console.log('HTTP प्रॉक्सी के माध्यम से कनेक्शन स्थापित किया गया');
ws.send('Node.js से नमस्ते!');
});
ws.on('message', (data) => {
console.log(`प्राप्त: ${data}`);
ws.close();
});
ws.on('error', (err) => {
console.error('त्रुटि:', err.message);
});
विकल्प 2: SOCKS5 के माध्यम से WSS
// npm install ws socks-proxy-agent
const WebSocket = require('ws');
const { SocksProxyAgent } = require('socks-proxy-agent');
const proxyUrl = 'socks5://username:[email protected]:1080';
const agent = new SocksProxyAgent(proxyUrl);
const ws = new WebSocket('wss://echo.websocket.org', { agent });
ws.on('open', () => {
console.log('SOCKS5 के माध्यम से कनेक्शन स्थापित किया गया');
ws.send(JSON.stringify({ type: 'ping', data: 'test' }));
});
ws.on('message', (data) => {
console.log('उत्तर:', data.toString());
});
ws.on('close', (code, reason) => {
console.log(`बंद: ${code} - ${reason}`);
});
विकल्प 3: HTTP प्रॉक्सी के माध्यम से मैन्युअल WS (TLS के बिना)
HTTP प्रॉक्सी के माध्यम से असुरक्षित WS (पोर्ट 80) के लिए, आपको मैन्युअल रूप से CONNECT अनुरोध भेजना होगा, क्योंकि मानक एजेंट अक्सर केवल HTTPS के साथ काम करते हैं:
const net = require('net');
const WebSocket = require('ws');
function createTunnel(proxyHost, proxyPort, targetHost, targetPort) {
return new Promise((resolve, reject) => {
const socket = net.connect(proxyPort, proxyHost, () => {
const connectReq =
`CONNECT ${targetHost}:${targetPort} HTTP/1.1\r\n` +
`Host: ${targetHost}:${targetPort}\r\n` +
`Proxy-Authorization: Basic ${Buffer.from('user:pass').toString('base64')}\r\n` +
`\r\n`;
socket.write(connectReq);
});
socket.once('data', (data) => {
if (data.toString().includes('200')) {
resolve(socket);
} else {
reject(new Error(`प्रॉक्सी ने CONNECT को अस्वीकार कर दिया: ${data.toString()}`));
}
});
socket.on('error', reject);
});
}
async function main() {
const socket = await createTunnel(
'proxy.example.com', 8080,
'echo.websocket.org', 80
);
const ws = new WebSocket('ws://echo.websocket.org', { socket });
ws.on('open', () => {
ws.send('मैन्युअल CONNECT टनल!');
});
ws.on('message', (data) => {
console.log('प्राप्त:', data.toString());
ws.close();
});
}
main().catch(console.error);
WSS (WebSocket Secure): TLS के साथ प्रॉक्सीकरण की विशेषताएँ
WSS TLS (HTTP के लिए HTTPS के समान) के ऊपर WebSocket है। SOCKS5 या HTTP CONNECT के माध्यम से WSS को प्रॉक्सी करते समय एक महत्वपूर्ण बिंदु है: TLS एन्क्रिप्शन क्लाइंट और अंतिम सर्वर के बीच स्थापित होता है, न कि क्लाइंट और प्रॉक्सी के बीच। इसका मतलब है:
- प्रॉक्सी सर्वर WSS ट्रैफ़िक की सामग्री को नहीं देखता - केवल आईपी पता और लक्ष्य पोर्ट
- सर्वर का प्रमाणपत्र सीधे क्लाइंट द्वारा सत्यापित किया जाता है
- प्रॉक्सी डेटा को "बदल" या "पकड़" नहीं सकता है बिना अपने स्वयं के CA प्रमाणपत्र की स्थापना के
यह सुरक्षा के दृष्टिकोण से अच्छी खबर है। लेकिन सेटअप के दौरान कुछ व्यावहारिक बारीकियाँ भी हैं:
प्रॉक्सी के माध्यम से प्रमाणपत्र की जांच
कभी-कभी कॉर्पोरेट प्रॉक्सी (जो SSL निरीक्षण करते हैं) का उपयोग करते समय आपको प्रमाणपत्र की जांच में त्रुटि मिल सकती है। इस मामले में प्रॉक्सी सर्वर अपने प्रमाणपत्र के साथ सर्वर के प्रमाणपत्र को बदल देता है। ऐसे वातावरण में काम करने के लिए, आपको प्रॉक्सी के CA प्रमाणपत्र को विश्वसनीय में जोड़ना होगा:
# Python: कॉर्पोरेट प्रॉक्सी के CA प्रमाणपत्र को पास करें
import ssl
import websocket
ssl_context = ssl.create_default_context()
ssl_context.load_verify_locations("/path/to/corporate-ca.crt")
ws = websocket.WebSocket(sslopt={"context": ssl_context})
ws.connect(
"wss://internal.example.com",
http_proxy_host="corp-proxy.company.com",
http_proxy_port=8080,
proxy_type="http"
)
# परीक्षण वातावरण में (उत्पादन के लिए नहीं!) आप जांच को बंद कर सकते हैं:
ws_test = websocket.WebSocket(sslopt={"cert_reqs": ssl.CERT_NONE})
ws_test.connect("wss://test.example.com", http_proxy_host="proxy", http_proxy_port=8080)
⚠️ महत्वपूर्ण
TLS प्रमाणपत्र की जांच को बंद करना (CERT_NONE) केवल परीक्षण वातावरण में स्वीकार्य है। उत्पादन में, यह MITM (मैन-इन-द-मिडल) हमलों के लिए एक भेद्यता पैदा करता है।
प्रॉक्सी के माध्यम से SNI (सर्वर नाम संकेत)
SOCKS5 का उपयोग करते समय, क्लाइंट DNS को स्वयं हल कर सकता है या इसे प्रॉक्सी को सौंप सकता है। socks5h मोड (होस्टनाम समाधान के साथ SOCKS5) का अर्थ है कि DNS अनुरोध प्रॉक्सी सर्वर के पक्ष में किया जाता है। यह WSS के लिए महत्वपूर्ण है, क्योंकि TLS-हैंडशेक में SNI हेडर को होस्ट नाम से मेल खाना चाहिए:
# socks5 — DNS स्थानीय रूप से (क्लाइंट द्वारा) हल किया जाता है
# socks5h — DNS प्रॉक्सी सर्वर द्वारा हल किया जाता है (गोपनीयता के लिए अनुशंसित)
from python_socks.async_.asyncio import Proxy
# प्रॉक्सी के माध्यम से DNS (अनुशंसित):
proxy = Proxy.from_url("socks5h://user:[email protected]:1080")
# स्थानीय DNS:
proxy = Proxy.from_url("socks5://user:[email protected]:1080")
सामान्य गलतियाँ और उन्हें कैसे ठीक करें
हमने WebSocket को प्रॉक्सी करते समय सबसे सामान्य समस्याओं को एकत्र किया है और उनके समाधान:
त्रुटि 1: 407 प्रॉक्सी प्रमाणीकरण आवश्यक है
प्रॉक्सी प्रमाणीकरण की आवश्यकता है, लेकिन आपने क्रेडेंशियल्स नहीं भेजे हैं या उन्हें गलत तरीके से भेजा है।
# ❌ गलत — कोई प्रमाणीकरण नहीं
ws.connect("wss://example.com", http_proxy_host="proxy.example.com", http_proxy_port=8080)
# ✅ सही — लॉगिन और पासवर्ड भेजें
ws.connect(
"wss://example.com",
http_proxy_host="proxy.example.com",
http_proxy_port=8080,
http_proxy_auth=("username", "password")
)
त्रुटि 2: Connection reset by peer / 502 Bad Gateway
प्रॉक्सी WebSocket या CONNECT विधि का समर्थन नहीं करता है। समाधान: SOCKS5 पर स्विच करें या जांचें कि क्या आपका प्रदाता WebSocket ट्रैफ़िक का समर्थन करता है।
त्रुटि 3: कनेक्शन 30-60 सेकंड के बाद टूट जाता है
कई प्रॉक्सी सर्वर "निष्क्रिय" TCP कनेक्शनों को टाइमआउट के कारण बंद कर देते हैं। WebSocket कनेक्शन डेटा के आदान-प्रदान के बिना निष्क्रिय लग सकता है। समाधान - पिंग/पोंग चालू करें:
# Python — हर 20 सेकंड में keepalive पिंग चालू करें
import websocket
import threading
def run():
ws = websocket.WebSocketApp(
"wss://echo.websocket.org",
on_message=lambda ws, msg: print(msg),
on_error=lambda ws, err: print(f"त्रुटि: {err}"),
on_close=lambda ws, c, m: print("बंद")
)
ws.run_forever(
ping_interval=20, # हर 20 सेकंड में पिंग भेजें
ping_timeout=10, # 10 सेकंड से अधिक पोंग की प्रतीक्षा न करें
http_proxy_host="proxy.example.com",
http_proxy_port=8080,
proxy_type="socks5"
)
thread = threading.Thread(target=run)
thread.start()
त्रुटि 4: SSL: CERTIFICATE_VERIFY_FAILED
यह आमतौर पर SSL निरीक्षण के साथ कॉर्पोरेट प्रॉक्सी का उपयोग करते समय उत्पन्न होता है। समाधान: प्रॉक्सी के CA प्रमाणपत्र को विश्वसनीय में जोड़ें (ऊपर अनुभाग देखें) या HTTP प्रॉक्सी के बजाय SOCKS5 का उपयोग करें - SOCKS5 SSL निरीक्षण नहीं करता है।
त्रुटि 5: हैंडशेक स्थिति 403 निषिद्ध
लक्षित सर्वर कनेक्शन को अवरुद्ध करता है। कारण: प्रॉक्सी का आईपी काले सूची में है, आवश्यक हेडर (Origin, User-Agent) अनुपस्थित हैं, या सर्वर डेटा केंद्रों से ट्रैफ़िक को अवरुद्ध करता है। समाधान: रेसिडेंशियल प्रॉक्सी का उपयोग करें जिनके पास वास्तविक घरेलू उपयोगकर्ताओं के आईपी हैं - इन्हें ब्लॉक करना बहुत कठिन है।
त्रुटि 6: [Errno 111] कनेक्शन अस्वीकृत
प्रॉक्सी सर्वर उपलब्ध नहीं है: गलत होस्ट/पोर्ट, या प्रॉक्सी चालू नहीं है। WebSocket का परीक्षण करने से पहले कनेक्शन डेटा और प्रॉक्सी की उपलब्धता की जांच करें।
WebSocket कार्यों के लिए कौन सा प्रकार का प्रॉक्सी चुनें
प्रॉक्सी के प्रकार का चयन विशिष्ट कार्य पर निर्भर करता है। यहाँ एक व्यावहारिक मार्गदर्शिका है:
| कार्य | अनुशंसित प्रकार | क्यों |
|---|---|---|
| WS के माध्यम से पार्सिंग (बाज़ार, वित्तीय डेटा) | डेटा सेंटर प्रॉक्सी | उच्च गति, कम विलंबता, स्थिर कनेक्शन |
| WebSocket सेवाओं के अवरोधों को बायपास करना | रेसिडेंशियल प्रॉक्सी | वास्तविक आईपी, न्यूनतम ब्लॉकिंग का जोखिम |
| मोबाइल ऐप्स के साथ WS (मोबाइल API के साथ काम करना) | मोबाइल प्रॉक्सी | मोबाइल ऑपरेटरों के आईपी - सेवाओं द्वारा उच्च विश्वास |
| WS सर्वर का लोड परीक्षण | डेटा सेंटर प्रॉक्सी | सस्ता, तेज, कई समवर्ती कनेक्शन |
| WS के लिए भू-स्थान परीक्षण | रेसिडेंशियल प्रॉक्सी | देशों और शहरों का बड़ा चयन |
WebSocket के लिए प्रॉक्सी के महत्वपूर्ण पैरामीटर
WebSocket कार्यों के लिए प्रॉक्सी प्रदाता का चयन करते समय निम्नलिखित पैरामीटर पर ध्यान दें:
- SOCKS5 का समर्थन: सुनिश्चित करें कि प्रदाता SOCKS5 प्रदान करता है, न कि केवल HTTP
- सत्र का समय (session duration): WebSocket के लिए "स्टिकी" सत्र महत्वपूर्ण हैं - एक आईपी लंबे समय तक। घूर्णन प्रॉक्सी कनेक्शन को काट देंगे
- कनेक्शन टाइमआउट: प्रॉक्सी को दीर्घकालिक TCP कनेक्शनों का समर्थन करना चाहिए (कुछ मिनटों से लेकर घंटों तक)
- बैंडविड्थ: स्ट्रीमिंग WebSocket (वीडियो, एक्सचेंज डेटा) के लिए उच्च बैंडविड्थ बिना किसी सीमाओं के महत्वपूर्ण है
- विलंबता (latency): वित्तीय अनुप्रयोगों और ट्रेडिंग बॉट्स के लिए न्यूनतम विलंबता महत्वपूर्ण है - प्रॉक्सी का चयन करें जो लक्षित सेवा के करीब सर्वरों के साथ हो
💡 WebSocket प्रॉक्सी प्रदाता द्वारा समर्थन की जांच
WebSocket कार्यों के लिए प्रॉक्सी खरीदने से पहले, उन्हें मुफ्त ईको सर्वर के माध्यम से परीक्षण करें:
wss://echo.websocket.org या
wss://ws.postman-echo.com/raw.
यदि कनेक्शन स्थापित होता है और संदेश लौटाए जाते हैं - तो प्रॉक्सी WebSocket के साथ सही तरीके से काम कर रहा है।
WebSocket के लिए स्टिकी सत्र सेटअप
अधिकांश रेसिडेंशियल प्रॉक्सी प्रदाता डिफ़ॉल्ट रूप से आईपी का घूर्णन करते हैं। WebSocket के लिए यह अस्वीकार्य है - प्रत्येक आईपी परिवर्तन का अर्थ है कनेक्शन का टूटना। सुनिश्चित करें कि आप स्टिकी सत्र मोड (स्थिर आईपी) का उपयोग कर रहे हैं। यह आमतौर पर प्रॉक्सी के विशेष URL प्रारूप के माध्यम से किया जाता है:
# स्टिकी सत्र का उदाहरण प्रारूप (प्रदाता पर निर्भर करता है):
# घूर्णन (WebSocket के लिए उपयुक्त नहीं):
socks5://user:[email protected]:1080
# स्टिकी सत्र (WebSocket के लिए उपयुक्त):
socks5://user-session-abc123:[email protected]:1080
# या देश और सत्र के पैरामीटर के माध्यम से:
socks5://user-country-us-session-12345:[email protected]:1080
निष्कर्ष
WebSocket केवल "दीर्घ कनेक्शन के साथ HTTP" नहीं है। यह एक अलग प्रोटोकॉल है, जिसे प्रॉक्सीकरण के दौरान विशेष दृष्टिकोण की आवश्यकता होती है। इस लेख से मुख्य निष्कर्ष:
- SOCKS5 - WebSocket के लिए सबसे अच्छा विकल्प: यह परिवहन स्तर पर काम करता है, प्रोटोकॉल को नहीं समझता, किसी भी पोर्ट का समर्थन करता है
- CONNECT के माध्यम से HTTP प्रॉक्सी भी काम करता है, लेकिन पोर्ट पर सीमाओं और SSL निरीक्षण से संबंधित संभावित समस्याओं के साथ
- स्टिकी सत्र अनिवार्य हैं: घूर्णन प्रॉक्सी हर आईपी परिवर्तन पर WebSocket कनेक्शन को काट देंगे
- Ping/pong keepalive प्रॉक्सी के टाइमआउट के कारण कनेक्शन के टूटने को रोकने के लिए आवश्यक है
- प्रॉक्सी के माध्यम से WSS सुरक्षित है: TLS एन्क्रिप्शन सीधे क्लाइंट और सर्वर के बीच स्थापित होता है, प्रॉक्सी सामग्री को नहीं देखता
यदि आप एक ऐसा एप्लिकेशन विकसित कर रहे हैं जो प्रॉक्सी के माध्यम से WebSocket के साथ काम करता है - SOCKS5 और स्टिकी सत्रों से शुरू करें। यह आपको डिबगिंग में घंटे बचाएगा। उन कार्यों के लिए जहाँ उच्च गति और कनेक्शन की स्थिरता महत्वपूर्ण है (ट्रेडिंग बॉट्स, डेटा स्ट्रीमिंग), डेटा सेंटर प्रॉक्सी जो कम विलंबता के साथ हैं, बहुत अच्छे हैं। यदि लक्षित सेवा सक्रिय रूप से डेटा सेंटर आईपी को ब्लॉक करती है - रेसिडेंशियल प्रॉक्सी पर विचार करें: उनके पास वास्तविक घरेलू उपयोगकर्ताओं के आईपी हैं और लंबे WebSocket सत्रों के दौरान ब्लॉक होने की संभावना बहुत कम होती है।
```