Iztīriet IP:ports starpniekserveru sarakstu ar Python
Pārbaudiet vienkāršu IPv4 failu, normalizējiet portus un noņemiet dublikātus, saglabājot dažādus viena IP portus.
Ierakstiet pa vienam IPv4 ierakstam IP:port rindā failā proxies.txt. Visiem jābūt vienam zināmam starpniekservera protokolam. Ja vācat no bezmaksas starpniekserveru saraksta, nodaliet protokolus pirms šīs teksta ievades veidošanas. Tīrīšana nepieņem URL ar akreditācijas datiem, CSV kolonnas vai IPv6 adreses.
Saglabājiet šo standarta bibliotēkas skriptu kā clean-proxies.py tajā pašā 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")
Palaidiet no šī direktorija:
uv run --no-project python clean-proxies.py
Pārskatiet izlaisto rindu paziņojumus un proxies-clean.txt; ievades fails paliek neskarts. Izvade saglabā pirmās parādīšanās secību un noņem dublikātus pēc adreses un skaitliskā porta. Divas 203.0.113.10:8080 kopijas un viena 203.0.113.10:3128 dod divus punktus. Decimālais ports 08080 normalizējas uz 8080.
Dokumentācijas adreses rāda tikai formātu. Derīga IPv4 sintakse ietver privātas un īpašas adreses, tāpēc tīrs ieraksts ne vienmēr ir publiski sasniedzams. Tikai publiskam sarakstam pievienojiet skaidru adrešu politiku.
Jauktā HTTP/SOCKS ievadē glabājiet protokolu atsevišķos failos vai kolonnā; nenosakiet to pēc porta 1080. Ja īstais formāts ir IPv6 kvadrātiekavās, lietojiet atbilstošu parsētāju. Skripts noraida neatbalstītu ievadi, nevis min, un izvade nepasaka pieejamību, anonimitāti, valsti vai ātrumu. Tam vajag kontrolētus savienojuma testus.