ניקוי רשימת פרוקסי 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 בסוגריים מרובעים אם זה הפורמט בפועל. הסקריפט דוחה קלט לא נתמך במקום לנחש, והפלט לא מעיד על זמינות, אנונימיות, מדינה או מהירות. אלה דורשים בדיקות חיבור מבוקרות.