Oczyść listę proxy IP:port za pomocą Pythona
Sprawdź prosty plik IPv4, normalizuj porty i usuwaj duplikaty, zachowując różne porty tego samego IP.
Wpisz po jednej pozycji IPv4 IP:port w wierszu pliku proxies.txt. Wszystkie muszą należeć do jednego znanego protokołu proxy. Zbierając je z listy darmowych serwerów proxy, rozdziel protokoły przed utworzeniem tego tekstowego wejścia. Czyszczenie nie przyjmuje URL-i z danymi logowania, kolumn CSV ani adresów IPv6.
Zapisz ten skrypt używający biblioteki standardowej jako clean-proxies.py w tym samym katalogu:
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")
Uruchom go z tego katalogu:
uv run --no-project python clean-proxies.py
Sprawdź komunikaty o pominiętych wierszach i proxies-clean.txt; plik wejściowy pozostaje nienaruszony. Wyjście zachowuje kolejność pierwszego wystąpienia i usuwa duplikaty według adresu i liczbowego portu. Dwie kopie 203.0.113.10:8080 i jedna 203.0.113.10:3128 dają dwa punkty. Dziesiętny port 08080 jest normalizowany do 8080.
Adresy dokumentacyjne pokazują tylko format. Poprawna składnia IPv4 obejmuje adresy prywatne i specjalne, więc oczyszczony wpis nie musi być publicznie osiągalny. Dodaj jawną politykę adresów, jeśli lista ma być wyłącznie publiczna.
Dla mieszanego wejścia HTTP/SOCKS zachowaj protokół w oddzielnych plikach lub kolumnie; nie wnioskuj z portu 1080. Gdy rzeczywistym formatem jest IPv6 w nawiasach kwadratowych, użyj odpowiedniego parsera. Skrypt odrzuca nieobsługiwane wejście zamiast zgadywać; wyjście nie mówi nic o dostępności, anonimowości, kraju czy prędkości. Wymagają one kontrolowanych testów połączenia.