Masukkan satu entri IPv4 IP:port per baris dalam proxies.txt. Semua harus memakai satu protokol proxy yang diketahui. Jika mengumpulkan dari daftar proxy gratis, pisahkan protokol sebelum membuat masukan teks ini. Pembersihan tidak menerima URL berkredensial, kolom CSV atau alamat IPv6.

Simpan skrip pustaka standar 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 dari direktori itu:

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

Periksa pemberitahuan baris dilewati dan proxies-clean.txt; berkas masukan tetap utuh. Keluaran mempertahankan urutan kemunculan pertama dan menghapus duplikat berdasarkan alamat ditambah port numerik. Dua salinan 203.0.113.10:8080 dan satu 203.0.113.10:3128 menghasilkan dua endpoint. Port desimal 08080 dinormalkan menjadi 8080.

Alamat dokumentasi hanya menunjukkan format. Sintaks IPv4 sah mencakup alamat privat dan khusus, jadi entri bersih belum tentu dapat diakses publik. Tambahkan kebijakan alamat eksplisit jika hanya memerlukan daftar publik.

Untuk masukan HTTP/SOCKS campuran, simpan protokol di berkas terpisah atau kolom; jangan simpulkan dari port 1080. Gunakan parser untuk IPv6 dalam kurung siku jika itulah format sebenarnya. Skrip menolak masukan yang tidak didukung daripada menebak, dan keluarannya tidak menyatakan ketersediaan, anonimitas, negara atau kecepatan. Itu memerlukan pengujian koneksi terkontrol.

Artikel terkait