IP et port du proxy : quel format votre application attend-elle ?
Transformez une entrée de liste en URL HTTP ou SOCKS, renseignez les champs hôte et port séparés et formatez correctement les adresses IPv6.
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 demande | Saisir |
|---|---|
| Hôte ou IP | 203.0.113.10 |
| Port | 8080 |
| URL du proxy HTTP | http://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.