Puneți o intrare IPv4 IP:port pe linie în proxies.txt. Toate trebuie să aparțină unui singur protocol proxy cunoscut. Dacă le colectați din lista de proxy-uri gratuite, separați protocoalele înainte de această intrare text. Curățarea nu acceptă URL-uri cu acreditări, coloane CSV sau adrese IPv6.

Salvați acest script cu biblioteca standard ca clean-proxies.py în același director:

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

Rulați-l din acel director:

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

Inspectați mesajele despre liniile omise și proxies-clean.txt; fișierul de intrare rămâne intact. Ieșirea păstrează ordinea primei apariții și elimină duplicatele după adresă plus port numeric. Două copii ale 203.0.113.10:8080 și una a 203.0.113.10:3128 produc două puncte. Portul zecimal 08080 se normalizează la 8080.

Adresele de documentație ilustrează numai formatul. Sintaxa IPv4 validă include adrese private și speciale, deci o intrare curată nu este neapărat accesibilă public. Adăugați o politică explicită de adrese dacă doriți o listă exclusiv publică.

Pentru intrare HTTP/SOCKS mixtă, păstrați protocolul în fișiere separate sau într-o coloană; nu îl deduceți din portul 1080. Folosiți un analizor pentru IPv6 între paranteze drepte dacă acesta este formatul real. Scriptul respinge intrarea neacceptată în loc să ghicească, iar ieșirea nu indică disponibilitate, anonimat, țară sau viteză. Acestea cer teste de conexiune controlate.

Articole similare