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 हो तो सही पार्सर इस्तेमाल करें। स्क्रिप्ट अनुमान की जगह असमर्थित इनपुट अस्वीकार करती है; आउटपुट उपलब्धता, गुमनामी, देश या गति नहीं बताता। इनके लिए नियंत्रित कनेक्शन परीक्षण चाहिए।

संबंधित लेख