Meitsje in IP:poarte-proxylist skjin mei Python
Kontrolearje in ienfâldich IPv4-bestân, normalisearje poarten en ferwiderje dubbelen, mar behâld ferskillende poarten op itselde IP.
Set ien IPv4-yngong IP:port per rigel yn proxies.txt. Alle yngongen moatte by ien bekend proxyprotokol hearre. Sammelest út de list mei fergese proxy’s, skied dan de protokollen foar’tst dizze tekstynfier makkest. De skjinmakking akseptearret gjin URL’s mei oanmeldgegevens, CSV-kolommen of IPv6-adressen.
Bewarje dit skript mei de standertbibleteek as clean-proxies.py yn deselde map:
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")
Fier it út dy map út:
uv run --no-project python clean-proxies.py
Besjoch meldingen oer oersleine rigels en proxies-clean.txt; it ynfierbestân bliuwt yntakt. De útfier behâldt de folchoarder fan earste foarkommen en ûntdûbelet op adres plus numerike poarte. Twa kopyen fan 203.0.113.10:8080 en ien fan 203.0.113.10:3128 jouwe twa einpunten. Desimale poarte 08080 wurdt normalisearre ta 8080.
De dokumintaasje-adressen litte allinnich it formaat sjen. Jildige IPv4-syntaksis omfiemet privee en spesjale adressen, dus is in skjinne yngong net needsaaklik iepenbier berikber. Foegje eksplisyt adresbelied ta foar in list mei allinnich iepenbiere adressen.
Bewarje by mingde HTTP/SOCKS-ynfier it protokol yn aparte bestannen of in kolom; lied it net ôf út poarte 1080. Brûk in parser foar IPv6 yn fjouwerkante heakjes as dat it echte formaat is. It skript wegeret net-stipe ynfier ynstee fan te rieden; de útfier seit neat oer beskikberens, anonimiteit, lân of faasje. Dat freget kontrolearre ferbiningstests.