Metu unu IPv4-eron IP:port en ĉiu linio de proxies.txt. Ĉiuj devas aparteni al unu konata prokurila protokolo. Se vi kolektas el la listo de senpagaj prokuriloj, disigu protokolojn antaŭ ĉi tiu teksta enigo. La purigado akceptas nek URL-ojn kun akreditaĵoj, nek CSV-kolumnojn aŭ IPv6-adresojn.

Konservu ĉi tiun normbibliotekan skripton kiel clean-proxies.py en la sama dosierujo:

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

Rulu ĝin el tiu dosierujo:

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

Rigardu la avizojn pri preterlasitaj linioj kaj proxies-clean.txt; la eniga dosiero restas netuŝita. La eligo konservas la ordon de unua apero kaj forigas duplikatojn laŭ adreso plus nombra pordo. Du kopioj de 203.0.113.10:8080 kaj unu de 203.0.113.10:3128 produktas du finpunktojn. Dekuma pordo 08080 normaliĝas al 8080.

La dokumentaj adresoj nur montras formaton. Valida IPv4-sintakso inkluzivas privatajn kaj specialcelajn adresojn, do purigita ero ne nepre estas publike atingebla. Aldonu eksplicitan adrespolitikon se vi bezonas nurpublikan liston.

Por miksita HTTP/SOCKS-enigo konservu protokolon en apartaj dosieroj aŭ kolumno; ne deduktu ĝin el pordo 1080. Uzu analizilon por IPv6 en rektaj krampoj kiam tio estas la vera formato. La skripto rifuzas nesubtenatan enigon anstataŭ diveni, kaj ĝia eligo diras nenion pri disponeblo, anonimeco, lando aŭ rapido. Tiuj bezonas kontrolatajn konektotestojn.

Rilataj artikoloj