Eine IP:Port-Proxyliste mit Python bereinigen
Prüfen Sie eine reine IPv4-Proxydatei, normalisieren Sie Ports und entfernen Sie doppelte Endpunkte, wobei andere Ports derselben IP erhalten bleiben.
Schreiben Sie pro Zeile einen IPv4-Eintrag IP:port in proxies.txt. Alle Einträge müssen zu einem bekannten Proxyprotokoll gehören. Sammeln Sie aus der Liste kostenloser Proxys, trennen Sie vor dem Erstellen dieser Textdatei die Protokolle. Diese Bereinigung akzeptiert weder URLs mit Zugangsdaten noch CSV-Spalten oder IPv6-Adressen.
Speichern Sie dieses Skript mit ausschließlich Standardbibliothek im selben Verzeichnis als clean-proxies.py:
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")
Führen Sie es aus diesem Verzeichnis aus:
uv run --no-project python clean-proxies.py
Prüfen Sie die Meldungen über übersprungene Zeilen und proxies-clean.txt; die Eingabedatei bleibt unverändert. Die Ausgabe erhält die Reihenfolge des ersten Auftretens und entfernt Duplikate nach Adresse plus numerischem Port. Zwei Exemplare von 203.0.113.10:8080 und eines von 203.0.113.10:3128 ergeben zwei Endpunkte. Der dezimale Port 08080 wird zu 8080 normalisiert.
Die Dokumentationsadressen zeigen nur das Format. Gültige IPv4-Syntax umfasst private und besondere Adressen; ein bereinigter Eintrag ist daher nicht zwingend öffentlich erreichbar. Ergänzen Sie eine ausdrückliche Adressrichtlinie, wenn die Liste nur öffentliche Adressen enthalten soll.
Bei gemischten HTTP/SOCKS-Eingaben behalten Sie Protokollinformationen in getrennten Dateien oder einer Spalte; leiten Sie sie nicht aus Port 1080 ab. Für tatsächlich verwendete IPv6-Adressen in Klammern nutzen Sie einen passenden Parser. Dieses Skript lehnt nicht unterstützte Eingaben ab, statt zu raten. Seine Ausgabe sagt nichts über Verfügbarkeit, Anonymität, Land oder Geschwindigkeit. Dafür sind kontrollierte Verbindungstests nötig.