Stavite jednu IPv4 stavku IP:port po retku u proxies.txt. Sve moraju pripadati jednom poznatom proxy protokolu. Ako ih prikupljate s popisa besplatnih proxyja, razdvojite protokole prije ovog tekstnog ulaza. Čišćenje ne prihvaća URL-ove s vjerodajnicama, CSV stupce ili IPv6 adrese.

Spremite ovu skriptu sa standardnom bibliotekom kao clean-proxies.py u isti direktorij:

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

Pokrenite je iz tog direktorija:

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

Pregledajte obavijesti o preskočenim retcima i proxies-clean.txt; ulazna datoteka ostaje netaknuta. Izlaz zadržava redoslijed prve pojave i uklanja duplikate po adresi i brojčanom priključku. Dvije kopije 203.0.113.10:8080 i jedna 203.0.113.10:3128 daju dvije točke. Decimalni priključak 08080 normalizira se u 8080.

Dokumentacijske adrese prikazuju samo format. Ispravna IPv4 sintaksa uključuje privatne i posebne adrese, pa očišćena stavka nije nužno javno dostupna. Dodajte izričitu politiku adresa ako trebate isključivo javni popis.

Za miješani HTTP/SOCKS ulaz zadržite protokol u zasebnim datotekama ili stupcu; ne zaključujte ga po priključku 1080. Za stvarni format IPv6 u uglatim zagradama koristite odgovarajući parser. Skripta odbija nepodržani ulaz umjesto pogađanja, a izlaz ne govori o dostupnosti, anonimnosti, državi ili brzini. To zahtijeva kontrolirane testove veze.

Povezani članci