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 richiedeInserisci
Host o IP203.0.113.10
Porta8080
URL del proxy HTTPhttp://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.

Articoli correlati