تنظيف قائمة وكلاء IP:port باستخدام Python
تحقق من ملف IPv4 بسيط ووحّد المنافذ وأزل التكرار مع الاحتفاظ بالمنافذ المختلفة للعنوان نفسه.
ضع إدخال 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 بين أقواس مربعة إذا كان هذا هو التنسيق الفعلي. يرفض السكربت الإدخال غير المدعوم بدل التخمين، ولا يدل الناتج على التوفر أو إخفاء الهوية أو البلد أو السرعة. تتطلب هذه اختبارات اتصال مضبوطة.