Nettoyer une liste de proxys IP:port avec Python
Validez un fichier IPv4 simple, normalisez les ports et supprimez les doublons sans confondre les différents ports d’une même IP.
Placez une entrée IPv4 IP:port par ligne dans proxies.txt. Toutes doivent relever d’un même protocole proxy connu. Si elles viennent de la liste de proxys gratuits, séparez les protocoles avant de créer cette entrée en texte brut. Ce nettoyage n’accepte ni URL avec identifiants, ni colonnes CSV, ni adresses IPv6.
Enregistrez ce script utilisant la bibliothèque standard sous clean-proxies.py dans le même répertoire :
from ipaddress import IPv4Address
from pathlib import Path
seen = set()
cleaned = []
for number, raw in enumerate(
Path("proxies.txt").read_text(encoding="utf-8").splitlines(),
start=1,
):
text = raw.strip()
if not text:
continue
try:
host, port_text = text.rsplit(":", 1)
host = str(IPv4Address(host))
port = int(port_text)
if not 1 <= port <= 65535:
raise ValueError("port out of range")
except ValueError:
print(f"Skipping line {number}: invalid IPv4 endpoint")
continue
endpoint = (host, port)
if endpoint not in seen:
seen.add(endpoint)
cleaned.append(f"{host}:{port}")
output = "\n".join(cleaned)
Path("proxies-clean.txt").write_text(
output + ("\n" if output else ""),
encoding="utf-8",
)
print(f"Saved {len(cleaned)} endpoints")
Exécutez-le depuis ce répertoire :
uv run --no-project python clean-proxies.py
Examinez les messages de lignes ignorées et proxies-clean.txt ; le fichier d’entrée reste intact. La sortie conserve l’ordre de première apparition et dédoublonne sur l’adresse et le port numérique. Deux exemplaires de 203.0.113.10:8080 et un de 203.0.113.10:3128 produisent deux points de connexion. Le port décimal 08080 devient 8080.
Les adresses de documentation illustrent uniquement le format. Une syntaxe IPv4 valide inclut des adresses privées et à usage spécial : une entrée nettoyée n’est donc pas forcément accessible publiquement. Ajoutez une politique d’adresses explicite pour une liste exclusivement publique.
Pour une entrée HTTP/SOCKS mixte, gardez le protocole dans des fichiers séparés ou une colonne ; ne le déduisez pas du port 1080. Utilisez un analyseur pour IPv6 entre crochets si c’est le format réel. Ce script rejette les entrées non prises en charge au lieu de deviner ; sa sortie n’indique ni disponibilité, ni anonymat, ni pays, ni vitesse. Cela exige des tests de connexion contrôlés.