Tutte le posizioni attive · 99.99% uptime
Protocolli

WebSocket e proxy

WebSocket stabilisce un canale bidirezionale e permanentemente aperto tra browser e server. Dashboard di dati in tempo reale, applicazioni di chat e notifiche in tempo reale usano questa tecnologia. Se funzioni o meno tramite proxy dipende dal tipo di proxy e dalla sua configurazione.

Come si avvia una connessione WebSocket?

WebSocket non è un protocollo a sé stante: inizia con una richiesta HTTP e Upgrade cambia protocollo tramite questo meccanismo:

FIGURAHandshake di upgrade WebSocket
UPGRADEClientIl serverGET /socket HTTP/1.1Upgrade: websocket · Connection: UpgradeSec-WebSocket-Key: dGhlIHNhbXBsZQ==101 Switching Protocols→ Da qui in poi flusso di frame bidirezionale

Dopo la risposta 101 la connessione cessa di essere HTTP e iniziano a scorrere i frame WebSocket. Per questo ogni livello intermedio deve comprendere l'upgrade.

Comportamento in base al tipo di proxy

FIGURASupporto WebSocket: per tipo di proxy
COMPATIBILITÀws:// (non cifrato)wss:// (cifrato)Proxy HTTP (con supporto Upgrade)FunzionaFunzionaProxy HTTP (datato)Non funzionaFunzionaTunnel CONNECTFunzionaFunzionaSOCKS5FunzionaFunziona

La combinazione più sicura wss:// + tunnel CONNECT. Essendo cifrato, il proxy non può intervenire sul contenuto né compromettere l'upgrade.

Consiglio pratico

Se devi far girare tramite proxy un'applicazione che usa WebSocket wss:// scegli la versione cifrata. Poiché il tunnel del proxy trasporta solo byte, non può in alcun modo interferire con il processo di upgrade e i problemi di compatibilità scompaiono.

Perché alcuni proxy lo compromettono?

In chiaro ws:// il proxy legge la richiesta. I proxy datati o configurati in modo rigido possono commettere questi errori:

FIGURAProblemi tra WebSocket e proxy
PROBLEMACODICE / SINTOMOPOSSIBILE CAUSASOLUZIONE400 / 502 durantel'upgradeIl proxy non inoltra l'header UpgradeUsa wss:// oppure opta per un tunnel CONNECTLa connessione cade dopo30-60 sTimeout di inattività del proxyAggiungi ping/pong a livello applicativoI messaggi arrivano in ritardoIl proxy applica il bufferingIl buffer va disattivato oppure va usato wssIl 101 non arriva maiIl proxy non supporta il cambio di protocolloUsa SOCKS5 o un tunnel CONNECTDisconnessioni casualiLa rotazione IP interrompe la sessioneUsa sessioni sticky o un IP statico

L'ultima riga sfugge spesso: se usi un rotating proxy, la connessione WebSocket cade quando cambia l'IP. In questo scenario IP statico dedicato.

Evitare le disconnessioni: ping/pong

I proxy e i router intermedi chiudono le connessioni su cui non transitano dati per lungo tempo. Il protocollo WebSocket definisce i frame ping/pong proprio per questa situazione. La maggior parte delle librerie lo fa automaticamente, ma potresti dover regolare l'intervallo:

FIGURAMantenere viva la connessione
Impostazioni delle librerie01# Python websockets — intervallo di ping02import websockets03async with websockets.connect(04 "wss://ornek.com/socket",05 ping_interval=20, # un ping ogni 20 secondi06 ping_timeout=10, # cade se il pong non arriva07) as ws:08 await ws.send("merhaba")0910# Node.js ws11const ws = new WebSocket("wss://ornek.com/socket", { agent: proxyAgent });12setInterval(() => { if (ws.readyState === 1) ws.ping(); }, 20000);1314# Lato browser non esiste il ping — invia un messaggio a livello applicativo15setInterval(() => ws.send(JSON.stringify({t: "keepalive"})), 25000);

Mantieni l'intervallo di ping inferiore al timeout di inattività del proxy. 20-25 secondi sono un valore sicuro per la maggior parte delle configurazioni.

WebSocket con SOCKS5

Poiché SOCKS5 non esamina affatto i dati applicativi, trasporta i WebSocket in modo naturale. Handshake di upgrade, cambio di protocollo e flusso di frame: per SOCKS5 è tutto solo un flusso di byte. Questo rende SOCKS5 l'opzione più sicura negli scenari WebSocket.

Per il comportamento generale di SOCKS5 come funziona SOCKS5 il nostro articolo dedicato.

Connessioni di lunga durata e stabilità dell'IP

FIGURAConflitto tra rotating proxy e WebSocket
PROBLEMA00:00Connessione WebSocket stabilita —IP: A05:00Flusso di dati normale10:00TTL sticky scaduto — si tenta di assegnareun nuovo IP10:01La connessione TCP esistente è caduta10:02L'applicazione è costrettaa riconnettersi

WebSocket è per natura di lunga durata, mentre la rotazione cerca di cambiare IP. Le due cose entrano in conflitto. In questo scenario servono un IP statico o una durata sticky molto lunga.

Strategia di riconnessione

Se usi WebSocket tramite proxy, progetta la disconnessione come condizione attesa e non come eccezione:

  • Backoff esponenziale: attesa crescente di 1, 2, 4, 8 secondi.
  • Aggiungi jitter: Evita che molti client caduti nello stesso momento tornino tutti insieme.
  • Sincronizzazione dello stato: dopo la riconnessione, richiedi i messaggi persi.
  • Limite massimo di tentativi: non entrare in un ciclo infinito; avvisa l'utente.
  • Monitora la salute della connessione: se la frequenza delle disconnessioni aumenta, rivedi la configurazione del proxy.

Riepilogo

WebSocket inizia con il meccanismo di upgrade HTTP e per questo i livelli intermedi devono comprendere il cambio di protocollo. wss:// Usare la versione cifrata e optare per un tunnel CONNECT o per SOCKS5 elimina in larga misura i problemi di compatibilità. Le connessioni di lunga durata entrano in conflitto con i rotating proxy; in questo scenario serve un IP statico. Mantieni l'intervallo ping/pong inferiore al timeout del proxy e progetta una solida strategia di riconnessione. Per le opzioni con IP statico ISP proxy del nostro sito.

Domande frequenti

01I WebSocket funzionano tramite proxy?

Sì. Se usi wss:// (cifrato) e instradi il traffico tramite un tunnel CONNECT o SOCKS5, funziona senza problemi. Con traffico ws:// in chiaro alcuni proxy potrebbero non inoltrare gli header di upgrade.

02Perché la mia connessione WebSocket cade di continuo?

Le due cause più frequenti: il timeout di inattività del proxy e la rotazione IP. Per la prima riduci l'intervallo di ping, per la seconda usa un IP statico o una sessione sticky lunga.

03Posso usare i WebSocket con un rotating proxy?

In pratica è difficile. Quando la rotazione cambia IP, la connessione TCP esistente cade. Per connessioni di lunga durata una soluzione con IP statico è molto più adatta.

04SOCKS5 è migliore per i WebSocket?

Sì, in genere. Poiché SOCKS5 non esamina i dati applicativi, non può interferire con l'handshake di upgrade; questo elimina i problemi di compatibilità.

05A quanti secondi devo impostare l'intervallo di ping?

20-25 secondi sono sicuri per la maggior parte delle configurazioni. L'importante è che sia inferiore al timeout di inattività del proxy o dei router intermedi.

Articoli e pagine correlati

PROSSIMO PASSO

Potenzia oggi la tua infrastruttura proxy.

Inizia in pochi minuti con i pacchetti a pagamento oppure prova prima il nostro elenco di proxy gratuiti.

FREEPROXY.TR

Se cerchi proxy gratuiti, sei nel posto giusto

Una piattaforma proxy completa dove consultare indirizzi proxy gratuiti aggiornati, confrontare i tipi di proxy HTTP e SOCKS e verificare le tue connessioni proxy con strumenti gratuiti.