Python으로 IP:포트 프록시 목록 정리하기
단순 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라면 그에 맞는 파서를 사용하세요. 이 스크립트는 추측하는 대신 미지원 입력을 거부하며 출력은 가용성, 익명성, 국가나 속도를 말해 주지 않습니다. 이런 정보에는 통제된 연결 테스트가 필요합니다.