프록시 IP와 포트: 앱에는 어떤 형식이 필요할까?
프록시 목록 항목을 HTTP 또는 SOCKS URL로 바꾸고, 별도 호스트·포트 필드를 채우며 IPv6 주소 형식을 올바르게 지정합니다.
어떤 앱은 IP:port를 요구합니다. 다른 앱은 http:// 또는 socks5://로 시작하는 URL이 필요합니다. 브라우저 설정에서는 주소와 포트를 별도 필드에 넣는 경우가 많습니다. 따라서 같은 엔드포인트도 주소 자체는 그대로인 채 여러 형식으로 표시될 수 있습니다.
IPv4 항목
HTTP 프록시 목록에서 예시 HTTP 프록시 203.0.113.10:8080를 제공한다고 가정해 보겠습니다.
| 앱이 요구하는 항목 | 입력값 |
|---|---|
| 호스트 또는 IP | 203.0.113.10 |
| 포트 | 8080 |
| HTTP 프록시 URL | http://203.0.113.10:8080 |
포트를 두 번 넣지 마세요. 앱에 이미 포트 입력란이 있는데 호스트란에 203.0.113.10:8080를 넣으면 전체 문자열을 호스트 이름으로 해석하려 할 수 있습니다. 마찬가지로 IP 주소만 명시적으로 요구하는 필드에는 스킴을 붙이지 마세요.
스킴은 서비스와 일치해야 합니다. 주소를 변환하기 전에 클라이언트 지원에 맞춰 HTTP 또는 SOCKS5를 선택하세요. HTTP 엔드포인트 앞에 socks5://를 쓰면 클라이언트가 보내는 내용이 바뀔 뿐, 해당 서버에서 SOCKS5가 활성화되지는 않습니다.
URL의 IPv6 주소에는 대괄호가 필요합니다
IPv6 주소에는 이미 콜론이 있으므로 URL에서는 주소를 대괄호로 감싼 뒤 포트를 붙입니다.
http://[2001:db8::10]:8080
socks5://[2001:db8::10]:1080
대괄호가 없으면 주소와 포트의 경계가 모호합니다. 필드가 나뉜 앱은 보통 호스트에 2001:db8::10, 포트에 8080를 요구합니다. 해당 앱의 입력 형식을 따르세요. 여기 쓴 두 주소는 문서용 예시이며 실제 운영 중인 프록시가 아닙니다.
콜론마다 나누지 말고 URL을 파싱하세요
짧은 Python 스크립트에서 표준 URL 파서를 사용하면 IPv4 및 대괄호로 감싼 IPv6 URL을 처리할 수 있습니다.
from urllib.parse import urlsplit
proxy = urlsplit("http://[2001:db8::10]:8080")
print(proxy.scheme)
print(proxy.hostname)
print(proxy.port)
hostname 속성은 대괄호 없는 주소를 반환합니다. 원래 문자열을 모든 콜론에서 분리하면 이 예시를 올바르게 처리하지 못합니다. 실제 가져오기 도구에서는 누락된 호스트, 지원하지 않는 스킴, 1–65535 범위 밖의 포트도 거부하세요. URL을 파싱하면 구성 요소를 얻을 뿐, 서비스의 존재를 입증하지는 못합니다.
목록에 사용자 이름과 비밀번호가 있는 경우
일반적인 URL 구조는 http://username:password@host:port입니다. 인증 정보의 @, #, / 같은 문자는 적절한 URL 인코딩이 필요합니다. 클라이언트에 별도 인증 정보 필드가 있으면 URL을 직접 조립하기보다 그 필드를 쓰는 편이 보통 더 쉽습니다.
콜론으로 구분된 인증 정보 문자열을 변환하기 전에 제공자의 원래 형식을 확인하세요. 콜론으로 나눈 네 필드에 보편적인 의미는 없으며 비밀번호 자체에도 콜론이 들어갈 수 있습니다. 단순 IP:port 행을 위한 파서가 다른 형식을 조용히 추측해서는 안 됩니다.