Certaines applications attendent IP:port. D’autres demandent une URL commençant par http:// ou socks5://. Les paramètres du navigateur séparent souvent l’adresse et le port. Un même point de terminaison peut donc apparaître sous plusieurs formats sans changer d’adresse.

Une entrée IPv4

Supposons qu’une liste de proxys HTTP fournisse le proxy HTTP d’exemple 203.0.113.10:8080.

L’application demandeSaisir
Hôte ou IP203.0.113.10
Port8080
URL du proxy HTTPhttp://203.0.113.10:8080

N’indiquez pas le port deux fois. Si l’application possède déjà un champ de port, saisir 203.0.113.10:8080 dans le champ hôte peut l’amener à tenter de résoudre toute la chaîne comme un nom d’hôte. De même, n’ajoutez pas de schéma à un champ qui attend explicitement une adresse IP seule.

Le schéma doit correspondre au service. Choisissez HTTP ou SOCKS5 selon la prise en charge du client avant de convertir l’adresse. Écrire socks5:// devant un point de terminaison HTTP modifie ce que le client envoie ; cela n’active pas SOCKS5 sur le serveur.

Une adresse IPv6 doit être entre crochets dans une URL

Une adresse IPv6 contient déjà des deux-points : l’URL encadre donc l’adresse de crochets avant d’ajouter le port :

http://[2001:db8::10]:8080
socks5://[2001:db8::10]:1080

Sans crochets, la séparation entre adresse et port est ambiguë. Une application à champs séparés attend généralement 2001:db8::10 comme hôte et 8080 comme port ; suivez son format de saisie. Les deux adresses utilisées ici sont des exemples documentaires, pas des proxys actifs.

Analysez les URL au lieu de couper à chaque deux-points

Un petit script Python peut traiter les URL IPv4 et IPv6 entre crochets avec l’analyseur d’URL standard :

from urllib.parse import urlsplit

proxy = urlsplit("http://[2001:db8::10]:8080")
print(proxy.scheme)
print(proxy.hostname)
print(proxy.port)

La propriété hostname renvoie l’adresse sans les crochets. Découper la chaîne d’origine à chaque deux-points casserait cet exemple. Dans un véritable importateur, rejetez aussi les hôtes manquants, les schémas non pris en charge et les ports hors de 1–65535. Analyser une URL en fournit les composants ; cela ne prouve pas que le service existe.

Quand la liste inclut un nom d’utilisateur et un mot de passe

Une structure d’URL courante est http://username:password@host:port. Les caractères comme @, # et / dans les identifiants nécessitent un encodage URL correct. Si le client propose des champs d’identification séparés, les utiliser est généralement plus simple que construire l’URL à la main.

Vérifiez le format d’origine du fournisseur avant de convertir une chaîne d’identifiants séparés par des deux-points. Quatre champs ainsi séparés n’ont pas de signification universelle, et un mot de passe peut lui-même contenir un deux-points. Un analyseur conçu pour de simples lignes IP:port ne doit pas deviner silencieusement un autre format.

Articles similaires