In curl, scegli socks5h:// quando deve essere il proxy a risolvere il nome di destinazione. Scegli socks5:// quando curl deve risolverlo localmente e inviare un indirizzo al proxy. Entrambi usano SOCKS5; la h finale è una convenzione dell’URL del client.

Confronta le modalità sostituendo il listener locale con il tuo endpoint SOCKS5:

curl --noproxy '' --proxy socks5://127.0.0.1:1080 --connect-timeout 5 --max-time 15 --verbose https://example.com/
curl --noproxy '' --proxy socks5h://127.0.0.1:1080 --connect-timeout 5 --max-time 15 --verbose https://example.com/

Cambia soltanto la modalità di risoluzione. --noproxy '' cancella le regole di esclusione dal proxy per queste chiamate e i limiti di tempo delimitano il confronto. Le opzioni dedicate equivalenti sono --socks5 e --socks5-hostname. Usa un nome host come destinazione: un indirizzo IP letterale non richiede la risoluzione del nome di destinazione e non può mostrare questa differenza.

Un nome può esistere solo da un lato

Supponi che il proxy sia in esecuzione in una rete di sviluppo il cui DNS conosce il nome di un servizio interno. Il tuo portatile potrebbe non risolverlo in modalità socks5, mentre socks5h lascia che se ne occupi il proxy. Inverti la situazione, con un nome definito soltanto nel file hosts del portatile, e potrebbe fallire invece la risoluzione remota.

Anche il DNS pubblico può restituire indirizzi diversi da reti diverse. Una differenza nei risultati invita a confrontare gli indirizzi scelti e la loro raggiungibilità, anziché sostituire subito il proxy.

  • Impossibile risolvere il nome host del proxy: nessuna delle due modalità può partire. Il client continua a risolvere proxy.example in socks5h://proxy.example:1080.
  • La risoluzione locale della destinazione fallisce: controlla il resolver del client oppure confronta la modalità che invia il nome host al proxy.
  • Il server SOCKS rifiuta la destinazione: controlla la risposta e le sue regole. Una risoluzione locale riuscita non dimostra la raggiungibilità dal lato remoto.
  • Il tunnel funziona, ma la verifica del certificato fallisce: indaga sul TLS della destinazione; cambiare modalità DNS non è una soluzione generale ai problemi di fiducia.

Un nome di prova sotto il tuo controllo e i log del server possono confermare quale tipo di indirizzo sia arrivato a un proxy che amministri. Una pagina che mostra l’IP di uscita non può farlo: riporta la connessione verso l’esterno, non dove è avvenuta la risoluzione DNS.

Il vantaggio per la riservatezza ha un ambito preciso

La risoluzione sul proxy evita quella locale della destinazione per questa richiesta. Non cifra SOCKS, non dimostra che il proxy usi DNS cifrato e non instrada il traffico di altre applicazioni o del precaricamento del browser. Requests con supporto SOCKS usa la stessa distinzione tra risoluzione locale e sul proxy; altri client possono offrire un’impostazione al posto della notazione URL di curl. Scegli un protocollo supportato dall’applicazione prima di copiare un endpoint dalla lista di proxy SOCKS5.

Articoli correlati