Įrašykite po vieną IPv4 įrašą IP:port eilutėje į proxies.txt. Visi turi priklausyti vienam žinomam tarpinio serverio protokolui. Jei renkate iš nemokamų tarpinių serverių sąrašo, atskirkite protokolus prieš kurdami šią tekstinę įvestį. Valymas nepriima URL su prisijungimo duomenimis, CSV stulpelių ar IPv6 adresų.

Šį standartinės bibliotekos scenarijų išsaugokite kaip clean-proxies.py tame pačiame kataloge:

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

Paleiskite iš to katalogo:

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

Peržiūrėkite praleistų eilučių pranešimus ir proxies-clean.txt; įvesties failas lieka nepakeistas. Išvestis išlaiko pirmo pasirodymo tvarką ir šalina dublikatus pagal adresą bei skaitinį prievadą. Dvi 203.0.113.10:8080 kopijos ir viena 203.0.113.10:3128 duoda du taškus. Dešimtainis prievadas 08080 normalizuojamas į 8080.

Dokumentacijos adresai tik iliustruoja formatą. Taisyklinga IPv4 sintaksė apima privačius ir specialius adresus, tad išvalytas įrašas nebūtinai viešai pasiekiamas. Vien viešam sąrašui pridėkite aiškią adresų politiką.

Mišrioje HTTP/SOCKS įvestyje išsaugokite protokolą atskiruose failuose ar stulpelyje; nespręskite pagal prievadą 1080. Jei tikras formatas yra IPv6 laužtiniuose skliaustuose, naudokite tinkamą analizatorių. Scenarijus atmeta nepalaikomą įvestį užuot spėliojęs, o išvestis nieko nesako apie prieinamumą, anonimiškumą, šalį ar greitį. Tam reikia kontroliuojamų ryšio bandymų.

Susiję straipsniai