Provare un proxy HTTP con curl
Usa un test curl con limiti di tempo per esaminare connessione al proxy, tunnel HTTPS, stato della risposta e regole di esclusione senza cambiare il proxy globale del dispositivo.
Sostituisci 127.0.0.1:8080 con un endpoint del tuo servizio o della lista dei proxy HTTP ed esegui questo comando verso una destinazione HTTPS innocua:
curl --noproxy '' --proxy http://127.0.0.1:8080 --connect-timeout 5 --max-time 15 --verbose https://example.com/L’indirizzo di loopback indica un listener sulla tua macchina. Il comando lo seleziona esplicitamente, svuota l’elenco di esclusione di curl per questa chiamata e concede cinque secondi per stabilire la connessione e quindici secondi complessivi. Non modifica le impostazioni proxy del browser o del sistema.
Usa il vero eseguibile curl se la shell definisce curl come alias di un altro programma; curl --version identifica la build. Se il listener stesso richiede TLS, usa lo schema dell’URL del proxy indicato nella sua documentazione.
Leggi quattro risultati, non un solo segnale di successo
- Connessione al proxy scelto: indirizzo e porta sono raggiungibili.
- CONNECT accettato: il proxy ha aperto un tunnel verso la destinazione HTTPS.
- Certificato della destinazione verificato: TLS è stato completato con i controlli di attendibilità previsti.
- Risposta della destinazione ricevuta: esamina stato e contenuto per capire se il risultato soddisfa le esigenze dell’applicazione.
Un tunnel funzionante può essere seguito da un 403 o 429 della destinazione. curl può anche terminare con successo dopo aver ricevuto una risposta di errore HTTP: registra quindi sia lo stato della risposta sia l’esito di errore di curl. Una connessione TCP o un CONNECT riuscito, da soli, non bastano.
Un risultato compatto per confronti ripetuti
In una shell di tipo Unix, scarta il corpo e stampa stato del tunnel, stato della destinazione, peer della connessione e tempo trascorso:
curl --noproxy '' --proxy http://127.0.0.1:8080 --connect-timeout 5 --max-time 15 --silent --show-error --output /dev/null --write-out 'http=%{http_code} connect=%{http_connect} peer=%{remote_ip} total=%{time_total}\n' https://example.com/http_connect descrive la risposta del tunnel; http_code descrive la risposta HTTP finale. remote_ip è il peer a cui si connette curl, non una misurazione indipendente dell’indirizzo di uscita del proxy. Sugli altri sistemi sostituisci /dev/null oppure conserva il corpo della risposta.
Se il test fallisce, individua il passaggio di connessione o trasferimento non riuscito e confronta lo stesso obiettivo con un accesso diretto, dove quel percorso è consentito:
curl --noproxy '*' --connect-timeout 5 --max-time 15 --verbose https://example.com/--noproxy '*' evita i proxy. Se la verifica del certificato fallisce su entrambi i percorsi, è probabile un problema di attendibilità comune; se l’accesso diretto riesce ma CONNECT viene rifiutato, considera l’autenticazione o i criteri del proxy. Controlla l’output dettagliato prima di condividerlo, perché può contenere informazioni identificative.
Salva endpoint, destinazione e timestamp insieme al risultato. Questo documenta ciò che ha funzionato per quella richiesta; disponibilità futura, riservatezza e prestazioni sotto carico richiedono prove separate.