Masukkan satu entri IPv4 IP:port setiap baris dalam proxies.txt. Semua mesti menggunakan satu protokol proksi yang diketahui. Jika mengumpul daripada senarai proksi percuma, asingkan protokol sebelum membuat input teks ini. Pembersihan tidak menerima URL berkelayakan, lajur CSV atau alamat IPv6.

Simpan skrip pustaka standard ini sebagai clean-proxies.py dalam direktori yang sama:

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")

Jalankan daripada direktori itu:

uv run --no-project python clean-proxies.py

Semak notis baris dilangkau dan proxies-clean.txt; fail input kekal utuh. Output mengekalkan susunan kemunculan pertama dan membuang pendua berdasarkan alamat bersama port angka. Dua salinan 203.0.113.10:8080 dan satu 203.0.113.10:3128 menghasilkan dua titik akhir. Port perpuluhan 08080 dinormalkan kepada 8080.

Alamat dokumentasi hanya menunjukkan format. Sintaks IPv4 sah merangkumi alamat peribadi dan khas, jadi entri bersih tidak semestinya boleh dicapai secara awam. Tambah dasar alamat jelas jika memerlukan senarai awam sahaja.

Untuk input HTTP/SOCKS bercampur, simpan protokol dalam fail berasingan atau lajur; jangan simpulkan daripada port 1080. Gunakan penghurai IPv6 berkurung siku jika itulah format sebenar. Skrip menolak input tidak disokong dan bukannya meneka; outputnya tidak menunjukkan ketersediaan, kerahsiaan identiti, negara atau kelajuan. Itu memerlukan ujian sambungan terkawal.

Artikel berkaitan