레지덴셜 프록시에 연결하는 작업은 원래 5분이면 끝나야 하지만, 한 제공업체의 문서가 다른 업체의 관행을 전제로 작성되어 있는 탓에 종종 반나절이 걸리곤 합니다. 움직이는 부분은 딱 네 가지, 즉 호스트, 포트, 사용자 이름, 비밀번호뿐입니다. 제공업체마다 다른 점은 사용자 이름에 얼마나 많은 의미를 담아내느냐이며, 이런 방식의 게이트웨이에서는 거의 모든 것이 여기에 담겨 있습니다.
아래에서 형식이 무엇인지, 각 부분이 무슨 역할을 하는지, 그리고 문제가 생겼을 때 오류를 어떻게 읽어야 하는지 설명합니다.
네 가지 구성 요소
| 구성 요소 | 값 |
|---|---|
| Host | p.shifter.io |
| Port | 443 |
| Username | customer-USERNAME에 선택적 타겟팅 플래그 추가 |
| Password | 패널에서 확인 |
호스트와 포트는 절대 바뀌지 않습니다. 국가가 달라져도, 세션을 고정(sticky)하더라도, HTTP 대신 SOCKS5를 쓰더라도 마찬가지입니다. 모든 요청은 동일한 엔드포인트로 전송되며, 원하는 설정은 사용자 이름을 통해 표현합니다. 이는 이해해야 할 가장 중요한 지점인데, 설정마다 주소가 달랐던 예전의 포트 기반 제품들과 가장 크게 다른 부분이기 때문입니다.
HTTP(S)와 SOCKS5 모두 동일한 호스트와 포트로 통신합니다. 자격 증명은 패널의 Residential Proxies 항목에서 확인할 수 있습니다.
가장 단순한 요청
먼저 여기서부터 시작해서 작동을 확인한 뒤에 다른 요소를 추가하세요:
curl -x customer-USERNAME:PASSWORD@p.shifter.io:443 https://ipinfo.io/json
이 명령은 할당받은 종료 주소(exit address)를 설명하는 JSON을 반환합니다. 두 번 실행하면 로테이션이 기본 동작이므로 서로 다른 두 개의 주소가 나타나야 합니다. 여기까지 작동한다면 자격 증명은 올바른 것이고, 나머지는 모두 설정의 문제입니다.
사용자 이름에 타겟팅 추가하기
플래그는 하이픈으로 사용자 이름에 덧붙입니다. 순서는 상관없고, 값은 소문자로 쓰며, 여러 단어로 된 값은 밑줄(underscore)로 연결합니다.
customer-USERNAME # 로테이션, 지역 지정 없음
customer-USERNAME-country-de # 독일 종료 주소
customer-USERNAME-country-us-city-new_york # 도시 단위
customer-USERNAME-country-us-asn-7922 # 특정 네트워크
customer-USERNAME-sid-abc123 # 고정 세션
customer-USERNAME-sid-abc123-ttl-600 # 10분간 고정
customer-USERNAME-country-gb-sid-abc123-ttl-600 # 결합 사용
국가 코드는 ISO 3166-1 alpha-2를 따르므로 영국은 uk가 아니라 gb이며, 이는 가장 흔한 오타입니다. sid는 원하는 문자열을 자유롭게 지정할 수 있으며 이후 요청에서 동일한 종료 주소를 유지시켜 줍니다. ttl은 초 단위 유지 시간을 설정하며 sid와 함께일 때만 유효하고 기본값은 120입니다. 전체 참고 자료는 geo-targeting 문서와 sessions 문서에 있으며, 개념적 차이는 sticky versus rotating에서 확인할 수 있습니다.
한 가지 유용한 추가 사항으로, 기본적으로 특정 순간에 매우 좁은 필터에 맞는 것이 없으면 게이트웨이는 요청이 완료되도록 더 넓은 풀로 대체(fallback)합니다. 정확한 지역 일치가 요청 성공 여부보다 더 중요하다면 strict-true를 추가하세요. 이 경우 조용히 대체되는 대신 502를 받게 됩니다.
접하게 될 두 가지 형식
프록시 자격 증명은 두 가지 방식으로 작성되며, 이 둘을 서로 변환하는 과정에서 실수가 자주 발생합니다.
URL 형식, 대부분의 라이브러리와 curl에서 사용:
http://customer-USERNAME-country-de:PASSWORD@p.shifter.io:443
콜론 구분 형식, 많은 데스크톱 도구와 브라우저 확장 프로그램에서 사용하며, 보통 각 부분을 별도 필드로 요구합니다:
p.shifter.io:443:customer-USERNAME-country-de:PASSWORD
두 형식은 동일한 정보를 담고 있습니다. 도구가 네 개의 필드를 요구하면 두 번째 형식을, 하나의 문자열을 요구하면 첫 번째 형식을 사용하세요.
코드에서 사용하기
import requests
USER = "customer-USERNAME-country-de"
PROXY = f"http://{USER}:PASSWORD@p.shifter.io:443"
r = requests.get("https://ipinfo.io/json",
proxies={"http": PROXY, "https": PROXY}, timeout=20)
print(r.json())
http와 https 항목을 모두 설정하세요. 하나만 설정하는 것은 “일부 요청은 되는데 다른 요청은 안 되는” 문제의 흔한 원인인데, 일반 요청과 보안 요청이 서로 다른 경로를 타기 때문입니다.
비밀번호에 @, :, /, #처럼 URL에서 의미를 갖는 문자가 포함되어 있다면, 삽입하기 전에 퍼센트 인코딩(percent-encode)을 해야 합니다. 그렇지 않으면 URL이 잘못 해석되어 자격 증명이 완전히 올바른데도 인증 오류가 발생합니다.
SOCKS5의 경우 동일한 호스트, 포트, 자격 증명을 유지하면서 스킴만 바꾸면 됩니다. 호스트 이름을 로컬이 아니라 프록시 측에서 해석하는 방식을 사용하세요. 다른 방식은 DNS를 유출시키고 지역적으로 잘못된 결과를 반환할 수 있으며, 이는 preventing DNS leaks에서 다룹니다.
다른 스택에 대한 작동 설정은 integrations 문서에, Python에 특화된 내용은 using residential proxies with Python에 있습니다.
오류 읽기
거의 모든 설정 문제는 네 가지 응답으로 설명되며, 각각은 서로 다른 곳을 가리킵니다.
**407 Proxy Authentication Required**는 게이트웨이가 자격 증명을 거부했다는 뜻입니다. 자격 증명 자체가 틀렸거나, 사용자 이름 안의 플래그가 잘못되어 인식할 수 없는 값이 전체 사용자 이름을 파싱 불가능하게 만들었을 수 있습니다. 모든 플래그를 제거하고 순수한 사용자 이름부터 테스트하세요. 이것이 작동하면 문제는 플래그에 있는 것이므로 하나씩 다시 추가하면서 원인을 찾을 수 있습니다. 전체 진단 절차는 fixing 407 and credential errors에 있습니다.
**502 Bad Gateway**는 자격 증명은 문제가 없지만 그 순간 필터에 맞는 것이 없었다는 뜻입니다. 필터를 넓히거나, 도시 단위에서 국가 단위로 낮추거나, strict-true를 제거하세요.
**509 Bandwidth Limit Exceeded**는 초과 사용(overage)이 비활성화된 상태에서 플랜 할당량이 소진되었다는 뜻입니다. 연결 자체에는 문제가 없습니다.
연결 거부 또는 타임아웃은 애초에 게이트웨이에 도달하지 못했다는 뜻입니다. 예전 방식의 포트 기반 호스트가 아니라 p.shifter.io:443을 가리키고 있는지 확인하고, 프록시 문제라고 단정하기 전에 nc -vz p.shifter.io 443으로 원시 연결성을 테스트해 보세요.
실제로 작동하는지 검증하기
처음에 한 번씩 실행해 볼 만한 두 가지 점검이 있습니다.
로테이션 확인: sid 없이 동일한 요청을 여러 번 보내고 주소가 바뀌는지 확인하세요. 바뀌지 않는다면 대개의 원인은 프록시가 로테이션에 실패해서가 아니라 HTTP 클라이언트가 하나의 연결을 재사용하고 있기 때문이며, 이는 IP not rotating에서 다룹니다.
지역 확인: 국가를 지정해 요청한 뒤 반환된 주소가 해당 지역으로 지오로케이션되는지, 그리고 더 의미 있게는 지역에 민감한 타겟 사이트가 실제로 그곳에 있는 것처럼 반응하는지 확인하세요. 더 자세한 방법은 testing speed, success rate and location accuracy에 있습니다.
결론
호스트 하나, 포트 하나, 나머지는 모두 사용자 이름에 담겨 있습니다. 먼저 순수한 요청이 작동하도록 만든 다음 타겟팅 플래그를 하나씩 추가하고, 국가 코드는 ISO를 따르므로 영국은 gb라는 점을 기억하세요. HTTP와 HTTPS 프록시 항목을 모두 설정하고, 특수 문자가 포함된 비밀번호는 퍼센트 인코딩하며, SOCKS5를 사용한다면 원격에서 해석하는 방식을 선택하세요. 문제가 발생하면 상태 코드가 어디를 봐야 할지 알려줍니다. 407은 자격 증명 문제나 잘못된 플래그, 502는 뒤에 아무것도 없는 필터, 509는 대역폭 문제, 연결 거부는 게이트웨이와 아예 통신하지 못하고 있다는 뜻입니다.
이 게이트웨이는 residential proxies로 들어가는 관문이며, 여기서 국가, 도시, ASN, 세션은 모두 동일한 연결의 파라미터일 뿐이고 GB당 과금되므로 설정이 어떻든 지불 금액은 달라지지 않습니다. 이 모든 것이 처음이라면 residential proxies for beginners부터 시작하세요.