Pulire una lista di proxy IP:porta con Python
Valida un file IPv4 semplice, normalizza le porte e rimuovi duplicati mantenendo porte diverse sullo stesso IP.
Inserisci una voce IPv4 IP:port per riga in proxies.txt. Tutte devono appartenere a un solo protocollo proxy noto. Se provengono dall’elenco dei proxy gratuiti, separa i protocolli prima di creare questo input testuale. La pulizia non accetta URL con credenziali, colonne CSV o indirizzi IPv6.
Salva questo script basato sulla libreria standard come clean-proxies.py nella stessa directory:
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")
Eseguilo da quella directory:
uv run --no-project python clean-proxies.py
Controlla gli avvisi sulle righe saltate e proxies-clean.txt; il file di input rimane intatto. L’output conserva l’ordine di prima apparizione ed elimina duplicati per indirizzo più porta numerica. Due copie di 203.0.113.10:8080 e una di 203.0.113.10:3128 producono due endpoint. La porta decimale 08080 viene normalizzata a 8080.
Gli indirizzi di documentazione illustrano soltanto il formato. La sintassi IPv4 valida comprende indirizzi privati e speciali, quindi una voce pulita non è necessariamente raggiungibile pubblicamente. Aggiungi una politica esplicita sugli indirizzi per una lista solo pubblica.
Per input HTTP/SOCKS misto, conserva il protocollo in file separati o in una colonna; non dedurlo dalla porta 1080. Usa un parser per IPv6 tra parentesi quadre se è il formato reale. Lo script rifiuta input non supportati anziché indovinare, e l’output non indica disponibilità, anonimato, paese o velocità. Servono test di connessione controllati.