Legg én IPv4-oppføring IP:port per linje i proxies.txt. Alle må tilhøre én kjent proxyprotokoll. Henter du fra listen over gratis proxyer, skill protokollene før du lager denne tekstinndatafilen. Rensingen godtar ikke URL-er med påloggingsopplysninger, CSV-kolonner eller IPv6-adresser.

Lagre dette skriptet som bare bruker standardbiblioteket, 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")

Kjør det fra den mappen:

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

Se meldingene om hoppede linjer og proxies-clean.txt; inndatafilen forblir urørt. Utdata beholder rekkefølgen til første forekomst og fjerner dubletter etter adresse pluss numerisk port. To kopier av 203.0.113.10:8080 og én av 203.0.113.10:3128 gir to endepunkter. Desimalporten 08080 normaliseres til 8080.

Dokumentasjonsadressene viser bare formatet. Gyldig IPv4-syntaks omfatter private og spesielle adresser, så en renset oppføring er ikke nødvendigvis offentlig tilgjengelig. Legg til en uttrykkelig adressepolicy hvis listen bare skal inneholde offentlige adresser.

For blandede HTTP/SOCKS-inndata, behold protokollen i egne filer eller en kolonne; ikke utled den fra port 1080. Bruk en parser for IPv6 i hakeparenteser hvis det er det faktiske formatet. Skriptet avviser inndata som ikke støttes, fremfor å gjette. Utdata sier ingenting om tilgjengelighet, anonymitet, land eller hastighet. Det krever kontrollerte tilkoblingstester.

Relaterte artikler