IP:порт прокси тизмесин 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 болсо, ылайык талдагыч колдонуңуз. Скрипт божомол ордуна колдоого алынбаган киришти четке кагат; чыгыш жеткиликтүүлүк, анонимдүүлүк, өлкө же ылдамдыкты билдирбейт. Буларга көзөмөлдөнгөн туташуу сыноолору керек.