Očistite listu proxyja IP:port pomoću Pythona
Proverite jednostavnu IPv4 datoteku, normalizujte portove i uklonite duplikate, zadržavajući različite portove istog IP-a.
Stavite jednu IPv4 stavku IP:port po redu u proxies.txt. Sve moraju pripadati jednom poznatom proxy protokolu. Ako ih prikupljate s liste besplatnih proxyja, razdvojite protokole pre ovog tekstualnog ulaza. Čišćenje ne prihvata URL-ove s pristupnim podacima, CSV kolone ili IPv6 adrese.
Sačuvajte ovu skriptu sa standardnom bibliotekom kao clean-proxies.py u istom direktorijumu:
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")
Pokrenite je iz tog direktorijuma:
uv run --no-project python clean-proxies.py
Pregledajte obaveštenja o preskočenim redovima i proxies-clean.txt; ulazna datoteka ostaje netaknuta. Izlaz zadržava redosled prvog pojavljivanja i uklanja duplikate po adresi i numeričkom portu. Dve kopije 203.0.113.10:8080 i jedna 203.0.113.10:3128 daju dve tačke. Decimalni port 08080 normalizuje se u 8080.
Dokumentacijske adrese prikazuju samo format. Ispravna IPv4 sintaksa uključuje privatne i posebne adrese, pa očišćena stavka nije nužno javno dostupna. Dodajte izričitu politiku adresa ako trebate samo javnu listu.
Za mešani HTTP/SOCKS ulaz zadržite protokol u zasebnim datotekama ili koloni; ne zaključujte ga po portu 1080. Za stvarni format IPv6 u uglastim zagradama koristite odgovarajući parser. Skripta odbija nepodržani ulaz umesto pogađanja, a izlaz ne govori o dostupnosti, anonimnosti, državi ili brzini. To zahteva kontrolisane testove veze.