Pane üks IPv4 kirje IP:port reale faili proxies.txt. Kõik kirjed peavad kuuluma ühte teadaolevasse puhverserveriprotokolli. Kui kogud neid tasuta puhverserverite loendist, eralda protokollid enne selle tekstisisendi koostamist. Puhastus ei võta vastu mandaate sisaldavaid URL-e, CSV veerge ega IPv6-aadresse.

Salvesta see standardteeki kasutav skript nimega clean-proxies.py samasse kataloogi:

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äivita see samast kataloogist:

uv run --no-project python clean-proxies.py

Kontrolli vahelejäetud ridade teateid ja proxies-clean.txt; sisendfail jääb puutumata. Väljund säilitab esmaesinemise järjekorra ning eemaldab duplikaadid aadressi ja arvulise pordi järgi. Kaks 203.0.113.10:8080 koopiat ja üks 203.0.113.10:3128 annavad kaks lõpp-punkti. Kümnendport 08080 normaliseeritakse kujule 8080.

Dokumentatsiooniaadressid näitavad ainult vormingut. Kehtiv IPv4-süntaks hõlmab privaatseid ja eriotstarbelisi aadresse, seega puhastatud kirje pole tingimata avalikult kättesaadav. Ainult avaliku loendi jaoks lisa selgesõnaline aadressipoliitika.

Segatud HTTP/SOCKS-sisendi puhul säilita protokoll eraldi failides või veerus; ära järelda seda pordist 1080. Kasuta nurksulgudes IPv6 parserit, kui see on tegelik vorming. Skript lükkab toetamata sisendi tagasi, selle asemel et arvata, ning väljund ei ütle midagi kättesaadavuse, anonüümsuse, riigi ega kiiruse kohta. Need vajavad kontrollitud ühendusteste.

Seotud artiklid