Sæt én IPv4-post IP:port pr. linje i proxies.txt. Alle poster skal tilhøre én kendt proxyprotokol. Samler du dem fra listen over gratis proxyer, så adskil protokollerne før denne tekstinputfil. Rensningen accepterer ikke URL’er med legitimationsoplysninger, CSV-kolonner eller IPv6-adresser.

Gem dette standardbiblioteksscript som clean-proxies.py i samme mappe:

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ør det fra den mappe:

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

Se meddelelser om oversprungne linjer og proxies-clean.txt; inputfilen forbliver intakt. Output bevarer rækkefølgen af første forekomst og fjerner dubletter efter adresse plus numerisk port. To kopier af 203.0.113.10:8080 og én af 203.0.113.10:3128 giver to endepunkter. Decimalporten 08080 normaliseres til 8080.

Dokumentationsadresserne illustrerer kun formatet. Gyldig IPv4-syntaks omfatter private adresser og adresser til særlige formål, så en renset post er ikke nødvendigvis offentligt tilgængelig. Tilføj en udtrykkelig adressepolitik, hvis listen kun må indeholde offentlige adresser.

For blandet HTTP/SOCKS-input, behold protokollen i separate filer eller en kolonne; udled den ikke af port 1080. Brug en parser til IPv6 i firkantede parenteser, hvis det er det faktiske format. Scriptet afviser ikke-understøttet input frem for at gætte, og output siger intet om tilgængelighed, anonymitet, land eller hastighed. Det kræver kontrollerede forbindelsestest.

Relaterede artikler