Rensk ei IP:port-proxyliste med Python
Kontroller ei enkel IPv4-fil, normaliser portar og fjern dublettar, men hald på ulike portar på same IP.
Legg éi IPv4-oppføring IP:port per linje i proxies.txt. Alle må høyre til éin kjend proxyprotokoll. Hentar du frå lista over gratis proxyar, skil protokollane før du lagar denne tekstinndatafila. Reinskinga godtek ikkje URL-ar med innloggingsopplysningar, CSV-kolonnar eller IPv6-adresser.
Lagre dette skriptet som berre brukar standardbiblioteket, som clean-proxies.py i same mappe:
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")
Køyr det frå den mappa:
uv run --no-project python clean-proxies.py
Sjå meldingane om hoppa over-linjer og proxies-clean.txt; inndatafila vert urørt. Utdata held på rekkjefølgja til første førekomst og fjernar dublettar etter adresse pluss numerisk port. To kopiar av 203.0.113.10:8080 og éin av 203.0.113.10:3128 gir to endepunkt. Desimalporten 08080 vert normalisert til 8080.
Dokumentasjonsadressene viser berre formatet. Gyldig IPv4-syntaks omfattar private og spesielle adresser, så ei reinska oppføring er ikkje nødvendigvis offentleg tilgjengeleg. Legg til ein uttrykkeleg adressepolitikk dersom lista berre skal ha offentlege adresser.
For blanda HTTP/SOCKS-inndata, hald på protokollen i eigne filer eller ein kolonne; ikkje utlei han frå port 1080. Bruk ein parser for IPv6 i hakeparentesar dersom det er det faktiske formatet. Skriptet avviser ustøtta inndata framfor å gjette. Utdata seier ingenting om tilgjenge, anonymitet, land eller fart. Det krev kontrollerte tilkoplingstestar.