Utilizzo del proxy cURL, verifica dei proxy HTTP e SOCKS5 dalla riga di comando
Questa guida spiega come connettersi ai proxy HTTP e SOCKS5 di Socks5Proxy con cURL, autenticazione con username e password, misurazione tempi di risposta e uno script shell per verificare l'intera lista in una volta.
Perché è utile testare il proxy con cURL?
cURL è installato su quasi tutti i server e ambienti di sviluppo, rendendolo lo strumento più veloce per verificare se il proxy funziona correttamente. Se si verificano problemi nel codice o nelle impostazioni del browser, testare la stessa riga con cURL permette di distinguere immediatamente se il problema è del proxy o del codice.
L'esempio usa IP 198.51.100.23, porta HTTP 8000, porta SOCKS5 1080, username spx_user e password spx_pass.
Come ci si connette a un proxy HTTP?
Inserisci l'indirizzo del proxy nell'opzione -x (o --proxy). Puoi includere username e password nell'indirizzo o specificarli separatamente con l'opzione -U. Se richiedi un indirizzo HTTPS, cURL crea un tunnel CONNECT e invia la richiesta cifrata all'interno.
# user and password inside the proxy URL
curl -x http://spx_user:spx_pass@198.51.100.23:8000 https://api.ipify.org
# or with -U
curl -x http://198.51.100.23:8000 -U spx_user:spx_pass https://api.ipify.orgCome si connette un proxy SOCKS5?
--socks5-hostname risolve i nomi di dominio tramite il proxy. Le richieste DNS del tuo server non sono visibili all'esterno e i nomi vengono risolti in base al paese del proxy. --socks5 risolve i nomi sul tuo server e invia solo l'IP al proxy. Nella maggior parte dei casi, consigliamo --socks5-hostname.
Il formato socks5h:// funziona anche con l'opzione -x.
# DNS is resolved by the proxy
curl --socks5-hostname 198.51.100.23:1080 --proxy-user spx_user:spx_pass https://api.ipify.org
# same thing with a proxy URL
curl -x socks5h://spx_user:spx_pass@198.51.100.23:1080 https://api.ipify.orgCome vedere insieme tempo di risposta e stato?
Con l'opzione -w puoi visualizzare in una riga il tempo di connessione, il tempo fino al primo byte, il tempo totale e il codice di risposta. Utile per confrontare la velocità dei proxy in diversi paesi o per capire se è il sito di destinazione o il proxy a essere lento.
Con -o /dev/null scarti il corpo e con -s disattivi la visualizzazione dello stato per vedere solo il risultato in modo pulito.
curl -s -o /dev/null \
-x http://spx_user:spx_pass@198.51.100.23:8000 \
-w "code=%{http_code} connect=%{time_connect}s ttfb=%{time_starttransfer}s total=%{time_total}s\n" \
https://example.com/Come verificare l'intera lista in una volta sola?
Esegui cURL per ogni riga di una lista ottenuta via API per verificare lo stato di tutti i proxy. Questo script riceve una lista in formato ip:port:user:pass e stampa per ogni riga l'IP di risposta e il tempo impiegato. Il timeout evita blocchi su righe senza risposta.
#!/bin/sh
KEY="YOUR_API_KEY"
curl -s -H "Authorization: Bearer $KEY" \
"https://socks5proxy.io/api/v1/proxies/download?format=ip:port:user:pass&protocol=http" > proxies.txt
while IFS=: read -r ip port user pass; do
out=$(curl -s -m 15 -x "http://$user:$pass@$ip:$port" -w " %{time_total}s" https://api.ipify.org)
echo "$ip:$port $out"
done < proxies.txtPosso chiamare l'API con cURL?
Sì. Puoi verificare il saldo, elencare i piani attivi e i proxy con un solo header Authorization: Bearer. Le risposte JSON possono essere filtrate con strumenti come jq per visualizzare solo le colonne necessarie.
curl -H "Authorization: Bearer YOUR_API_KEY" https://socks5proxy.io/api/v1/account
curl -H "Authorization: Bearer YOUR_API_KEY" "https://socks5proxy.io/api/v1/proxies?country=us&protocol=socks5"Puoi anche configurare il proxy tramite variabili d'ambiente?
Sì. cURL e molti strumenti da riga di comando leggono le variabili d'ambiente http_proxy, https_proxy e all_proxy. Configurandole una volta nella shell, tutti gli strumenti eseguiti in quella shell, come cURL, wget e pip, utilizzeranno lo stesso proxy. Per SOCKS5, inserisci l'indirizzo socks5h:// in all_proxy.
Inserisci gli indirizzi che non devono passare attraverso il proxy in no_proxy, separati da virgole. Questo evita che i server interni o localhost vengano raggiunti tramite proxy.
export https_proxy="http://spx_user:spx_pass@198.51.100.23:8000"
export http_proxy="$https_proxy"
export no_proxy="localhost,127.0.0.1"
curl https://api.ipify.org
# SOCKS5 for every tool that reads all_proxy
export all_proxy="socks5h://spx_user:spx_pass@198.51.100.23:1080"Come si confrontano i risultati di un proxy HTTP e di un proxy SOCKS5?
Richiedendo lo stesso URL attraverso entrambe le porte dello stesso IP e confrontando IP e tempi di risposta, puoi vedere quale metodo è più veloce nel tuo ambiente. Solitamente sono simili, ma con server lontani o DNS lenti potresti notare differenze.
L'IP di risposta dovrebbe essere lo stesso in entrambi i metodi. Se è diverso, potresti aver mescolato porte di righe diverse, controlla di nuovo la lista.
for p in "http://spx_user:spx_pass@198.51.100.23:8000" "socks5h://spx_user:spx_pass@198.51.100.23:1080"; do
curl -s -m 15 -x "$p" -w " %{time_total}s\n" https://api.ipify.org
doneCome verifico gli IP per l'autorizzazione IP dal server?
Il valore da registrare per l'autorizzazione IP è l'IPv4 pubblico utilizzato dal tuo server per accedere a Internet. Esegui curl -4 https://api.ipify.org senza proxy per verificare immediatamente questo valore. Registra questo valore nel campo di autorizzazione IP del dashboard per consentire connessioni senza username e password da quel server.
curl -4 -s https://api.ipify.orgUn proxy può vedere il contenuto di un sito HTTPS?
Quando si richiede un indirizzo HTTPS tramite un proxy HTTP, cURL crea prima un tunnel CONNECT fino al server di destinazione, quindi stabilisce una connessione crittografata direttamente con il server. Il proxy sa solo a quale server connettersi, ma i dati scambiati sono crittografati e non visibili. Utilizzando l'opzione -v, è possibile vedere il processo CONNECT e la successiva connessione crittografata.
Lo stesso vale per SOCKS5. Il proxy inoltra semplicemente la connessione e la crittografia avviene tra cURL e il server di destinazione. Quindi è più sicuro non usare l'opzione di verifica del certificato (-k), perché anche tramite proxy il certificato del server di destinazione viene verificato normalmente.
Utilizzando --socks5-hostname, anche il nome di dominio a cui ti connetti viene risolto dal proxy, quindi non viene registrato nelle richieste DNS del tuo server.
curl -v -o /dev/null -x http://spx_user:spx_pass@198.51.100.23:8000 https://example.com/ 2>&1 | grep -E "CONNECT|HTTP/|SSL connection"Come si leggono i messaggi di errore di cURL?
Received HTTP code 407 from proxy after CONNECT indica un errore di autenticazione. Verifica username e password, o l'indirizzo IP del server registrato per l'autorizzazione IP. Se la password contiene @ o :, non inserirla nell'indirizzo, ma usala con -U o --proxy-user.
Failed to connect o Connection timed out indicano una porta errata o un firewall del server che blocca le connessioni in uscita. Utilizza la porta HTTP per indirizzi HTTP e la porta SOCKS5 per SOCKS5, e verifica che le porte in uscita siano aperte. L'opzione -v mostra il processo di connessione passo passo, facilitando l'individuazione della causa.