پاکسازی فهرست پراکسی IP:port با 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 در کروشه است، از تجزیهگر مناسب استفاده کنید. اسکریپت بهجای حدس، ورودی پشتیبانینشده را رد میکند و خروجی از دسترسپذیری، ناشناسی، کشور یا سرعت چیزی نمیگوید. اینها به آزمایش اتصال کنترلشده نیاز دارند.