Почистване на списък проксита IP:порт с Python
Проверете прост IPv4 файл, нормализирайте портовете и премахнете дубликатите, запазвайки различни портове на един IP.
Поставете по един IPv4 запис IP:port на ред в proxies.txt. Всички записи трябва да са от един известен прокси протокол. Ако ги събирате от списъка с безплатни проксита, разделете протоколите преди този текстов вход. Почистването не приема URL с идентификационни данни, CSV колони или IPv6 адреси.
Запишете този скрипт със стандартната библиотека като clean-proxies.py в същата директория:
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")
Изпълнете го от тази директория:
uv run --no-project python clean-proxies.py
Прегледайте съобщенията за пропуснати редове и proxies-clean.txt; входният файл остава непокътнат. Изходът запазва реда на първата поява и премахва дубликати по адрес плюс числов порт. Две копия на 203.0.113.10:8080 и едно на 203.0.113.10:3128 дават две точки. Десетичният порт 08080 се нормализира до 8080.
Документационните адреси илюстрират само формата. Валидният IPv4 синтаксис включва частни и специални адреси, затова почистен запис не е непременно публично достъпен. Добавете изрична адресна политика, ако искате само публичен списък.
За смесен HTTP/SOCKS вход запазете протокола в отделни файлове или колона; не го определяйте по порт 1080. Използвайте анализатор за IPv6 в квадратни скоби, ако това е действителният формат. Скриптът отхвърля неподдържан вход, вместо да гадае, а изходът не показва достъпност, анонимност, държава или скорост. Те изискват контролирани тестове на връзката.