Очищення списку проксі 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 у дужках використайте відповідний парсер. Скрипт відхиляє непідтримуваний ввід, а не вгадує. Вивід нічого не каже про доступність, анонімність, країну або швидкість. Потрібні контрольовані тести з’єднання.