Protocols

Scegliere tra proxy HTTP, HTTPS, SOCKS4 e SOCKS5

3 min read Published Updated 540 words

I quattro protocolli etichettati come "proxy" condividono poco oltre al nome. I proxy HTTP analizzano il Layer 7 e riscrivono le intestazioni; i proxy SOCKS non leggono affatto il tuo traffico. La distinzione determina quale proxy si adatta alla navigazione, allo scraping e al tunneling grezzo.

HTTP Proxy

Un proxy HTTP si aspetta semantiche HTTP. Apre la richiesta, legge l'URL, può aggiungere intestazioni come Via o X-Forwarded-For e rifiuta tutto ciò che non è una richiesta HTTP valida. I browser, curl e la maggior parte delle librerie di scraping usano per impostazione predefinita i proxy HTTP perché la configurazione è essenzialmente gratuita: impostare una singola variabile d'ambiente o passare un flag.

Il costo di questa semplicità è la visibilità. Il proxy vede l'URL completo, incluso il percorso e la stringa di query, e in HTTP in chiaro vede anche il corpo. I proxy di caching possono riscrivere le risposte; i proxy trasparenti possono rimuovere i cookie. Tratta qualsiasi proxy HTTP come un intermediario con pieni privilegi e non inviare mai credenziali in chiaro.

Proxy HTTPS e il metodo CONNECT

L'etichetta "proxy HTTPS" è leggermente fuorviante. Si riferisce a un proxy HTTP che implementa inoltre il metodo CONNECT. CONNECT dice al proxy di aprire un tunnel TCP grezzo verso un host di destinazione e di trasferire byte in entrambe le direzioni; il client e la destinazione negoziano quindi TLS come se il proxy non ci fosse. Il proxy vede l'host e la porta di destinazione, e il volume di byte, ma non il payload.

Un proxy "con supporto HTTPS" è quindi un proxy che supporta il tunneling TLS, non un proxy che funziona esso stesso su TLS. Il collegamento dalla tua macchina al proxy può essere in chiaro o crittografato indipendentemente. Se ti interessa che quel collegamento sia protetto, usa un'implementazione SOCKS5 su TLS o un proxy commerciale a pagamento che pubblica il suo endpoint TLS.

SOCKS4

SOCKS4 è il minimo del 1994: solo TCP, solo IPv4, niente UDP, niente IPv6, niente autenticazione, nessuna risoluzione del nome host sul proxy. L'handshake è di sei byte più un codice di risposta di un byte. Sopravvive nel mondo reale perché il protocollo è così piccolo che quasi qualsiasi strumento che supporti TCP può implementarlo correttamente. Se un elenco pubblicizza SOCKS4, aspettati un forwarding TCP grezzo verso un indirizzo IPv4 — e nient'altro.

SOCKS5

SOCKS5, definito nell'RFC 1928 (1996), è la versione parlata dalla maggior parte degli strumenti moderni. Aggiunge il forwarding UDP, gli indirizzi IPv6, l'autenticazione GSSAPI e l'opzione di risolvere i nomi host sul proxy anziché sul client. Poiché SOCKS5 non fa supposizioni sul livello applicativo che viaggia sopra, è la scelta più flessibile per carichi di lavoro non HTTP: SSH, IRC, BitTorrent, RPC personalizzato.

Prestazioni e Overhead

I proxy SOCKS hanno un overhead per richiesta inferiore perché non analizzano nulla. I proxy HTTP e HTTPS pagano per l'analisi completa della richiesta su ogni connessione. Per una singola sessione TLS di lunga durata all'interno di CONNECT, la differenza è trascurabile. Per migliaia di richieste brevi in cui il proxy apre una nuova connessione ogni volta, SOCKS5 vince in modo misurabile — tipicamente 2–5 ms per richiesta per il percorso di analisi.

Anonimato, in pratica

Un proxy HTTP che non rimuove le tue intestazioni può far trapelare il tuo IP client tramite Via, X-Forwarded-For o Forwarded. I proxy SOCKS non hanno tali intestazioni perché non hanno il concetto di intestazioni. Non si tratta tanto di una caratteristica di anonimato quanto dell'assenza di una superficie di fuga. All'interno di HTTPS tunnelizzato con CONNECT, la destinazione vede solo l'handshake TLS, quindi qualsiasi perdita a livello HTTP sul proxy è irrilevante.

Convenzioni sulle porte

Vedrai questi in questa directory: 80, 8080, 3128, 8888 per HTTP; 443 per endpoint che supportano esplicitamente CONNECT; 1080 per SOCKS. Molti provider espongono porte alte non standard (sopra 10.000) per eludere la scansione casuale delle porte. Il numero di porta non dice nulla sulla qualità — segnala solo ciò che l'operatore ha scelto di esporre.