თითო ხაზზე ერთი 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-ია, შესაბამისი პარსერი გამოიყენეთ. სკრიპტი გამოცნობის ნაცვლად უარყოფს მხარდაჭერის გარეშე შეყვანას, ხოლო შედეგი ხელმისაწვდომობას, ანონიმურობას, ქვეყანას ან სიჩქარეს არ მიუთითებს. ამისთვის საჭიროა კონტროლირებული კავშირის ტესტები.

დაკავშირებული სტატიები