IP e porta del proxy: quale formato richiede la tua app?
Converti una voce dell’elenco in un URL HTTP o SOCKS, compila campi host e porta separati e formatta correttamente gli indirizzi IPv6.
Alcune app richiedono IP:port. Altre vogliono un URL che inizi con http:// o socks5://. Le impostazioni del browser spesso separano indirizzo e porta in campi diversi. Lo stesso endpoint può quindi comparire in più formati senza cambiare indirizzo.
Una voce IPv4
Supponiamo che un elenco di proxy HTTP fornisca il proxy HTTP di esempio 203.0.113.10:8080.
| L’app richiede | Inserisci |
|---|---|
| Host o IP | 203.0.113.10 |
| Porta | 8080 |
| URL del proxy HTTP | http://203.0.113.10:8080 |
Non inserire la porta due volte. Se l’app ha già un campo porta, scrivere 203.0.113.10:8080 nel campo host può farle tentare di risolvere l’intera stringa come nome host. Allo stesso modo, non aggiungere uno schema a un campo che richiede esplicitamente solo un indirizzo IP.
Lo schema deve corrispondere al servizio. Scegli HTTP o SOCKS5 in base al supporto del client prima di convertire l’indirizzo. Anteporre socks5:// a un endpoint HTTP cambia ciò che il client invia; non abilita SOCKS5 su quel server.
IPv6 richiede parentesi quadre in un URL
Un indirizzo IPv6 contiene già dei due punti, quindi l’URL racchiude l’indirizzo tra parentesi quadre prima di aggiungere la porta:
http://[2001:db8::10]:8080
socks5://[2001:db8::10]:1080
Senza parentesi, il confine tra indirizzo e porta è ambiguo. Un’app con campi separati di solito richiede 2001:db8::10 come host e 8080 come porta; segui il suo formato di input. Entrambi gli indirizzi usati qui sono esempi per la documentazione, non proxy attivi.
Analizza gli URL invece di dividere a ogni due punti
Un piccolo script Python può gestire URL IPv4 e IPv6 con parentesi quadre tramite il parser URL standard:
from urllib.parse import urlsplit
proxy = urlsplit("http://[2001:db8::10]:8080")
print(proxy.scheme)
print(proxy.hostname)
print(proxy.port)
La proprietà hostname restituisce l’indirizzo senza parentesi quadre. Dividere la stringa originale a ogni due punti rovinerebbe questo esempio. In un importatore reale, rifiuta anche host mancanti, schemi non supportati e porte fuori dall’intervallo 1–65535. Analizzare un URL ne fornisce i componenti; non dimostra che il servizio esista.
Quando l’elenco include nome utente e password
Una struttura URL comune è http://username:password@host:port. I caratteri come @, # e / nelle credenziali richiedono una corretta codifica URL. Se il client offre campi separati per le credenziali, usarli è di solito più semplice che costruire un URL a mano.
Controlla il formato originale del fornitore prima di convertire una stringa di credenziali separata da due punti. Quattro campi separati così non hanno un significato universale, e la password stessa può contenere due punti. Un parser progettato per semplici righe IP:port non deve indovinare silenziosamente un formato diverso.