Vyčistěte seznam proxy IP:port pomocí Pythonu
Ověřte jednoduchý IPv4 soubor, normalizujte porty a odstraňte duplicity při zachování různých portů stejné IP.
Vložte jednu položku IPv4 IP:port na řádek do proxies.txt. Všechny musí patřit k jednomu známému proxy protokolu. Sbíráte-li je ze seznamu bezplatných proxy, oddělte protokoly před vytvořením tohoto textového vstupu. Čištění nepřijímá URL s přihlašovacími údaji, sloupce CSV ani IPv6 adresy.
Uložte tento skript se standardní knihovnou jako clean-proxies.py do stejného adresáře:
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")
Spusťte jej z tohoto adresáře:
uv run --no-project python clean-proxies.py
Prohlédněte hlášení přeskočených řádků a proxies-clean.txt; vstupní soubor zůstává nedotčený. Výstup zachovává pořadí prvního výskytu a odstraňuje duplicity podle adresy a číselného portu. Dvě kopie 203.0.113.10:8080 a jedna 203.0.113.10:3128 vytvoří dva body. Desítkový port 08080 se normalizuje na 8080.
Dokumentační adresy jen ukazují formát. Platná syntaxe IPv4 zahrnuje soukromé a zvláštní adresy, takže vyčištěná položka nemusí být veřejně dosažitelná. Pro seznam pouze veřejných adres přidejte výslovnou adresní politiku.
U smíšeného HTTP/SOCKS vstupu uchovejte protokol v oddělených souborech nebo sloupci; neodvozujte jej z portu 1080. Pro skutečný formát IPv6 v hranatých závorkách použijte příslušný parser. Skript odmítá nepodporovaný vstup namísto hádání; výstup nic neříká o dostupnosti, anonymitě, zemi nebo rychlosti. K tomu jsou nutné řízené testy spojení.