Set ien IPv4-yngong IP:port per rigel yn proxies.txt. Alle yngongen moatte by ien bekend proxyprotokol hearre. Sammelest út de list mei fergese proxy’s, skied dan de protokollen foar’tst dizze tekstynfier makkest. De skjinmakking akseptearret gjin URL’s mei oanmeldgegevens, CSV-kolommen of IPv6-adressen.

Bewarje dit skript mei de standertbibleteek as clean-proxies.py yn deselde map:

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")

Fier it út dy map út:

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

Besjoch meldingen oer oersleine rigels en proxies-clean.txt; it ynfierbestân bliuwt yntakt. De útfier behâldt de folchoarder fan earste foarkommen en ûntdûbelet op adres plus numerike poarte. Twa kopyen fan 203.0.113.10:8080 en ien fan 203.0.113.10:3128 jouwe twa einpunten. Desimale poarte 08080 wurdt normalisearre ta 8080.

De dokumintaasje-adressen litte allinnich it formaat sjen. Jildige IPv4-syntaksis omfiemet privee en spesjale adressen, dus is in skjinne yngong net needsaaklik iepenbier berikber. Foegje eksplisyt adresbelied ta foar in list mei allinnich iepenbiere adressen.

Bewarje by mingde HTTP/SOCKS-ynfier it protokol yn aparte bestannen of in kolom; lied it net ôf út poarte 1080. Brûk in parser foar IPv6 yn fjouwerkante heakjes as dat it echte formaat is. It skript wegeret net-stipe ynfier ynstee fan te rieden; de útfier seit neat oer beskikberens, anonimiteit, lân of faasje. Dat freget kontrolearre ferbiningstests.

Relatearre artikelen