스크래핑

레지덴셜 프록시 IP가 차단되었을 때 해야 할 일

로테이팅 풀에서는 차단된 주소를 복구하지 않고 교체합니다. 진짜 해야 할 작업은 교체본이 같은 길을 가기 전에 무엇 때문에 차단되었는지 찾아내는 것입니다.

Chris Collins

Chris Collins

2026년 8월 29일 · 5 분 소요

타겟에서 성공률이 떨어지고 챌린지 페이지가 나타나기 시작하면, 자연스러운 첫 반응은 IP가 차단되었다고 생각하는 것이다. 때로는 정확히 그것이 맞다. 하지만 자주 그렇지 않으며, 이 차이는 중요한데, 대응 방식이 정반대이기 때문이다. 하나는 주소를 바꾸라고 요구하고, 다른 하나는 속도를 늦추고 그 외에는 아무것도 바꾸지 말라고 요구한다.

그리고 이 문제 전체를 다시 바라보게 만드는 구조적인 포인트가 있다. 로테이팅 레지덴셜 풀에서는 주소를 소유하지 않으므로, 회복시켜야 할 주소 자체가 없다. 회복이란 다음 요청이 수락되게 만드는 것을 의미하며, 이를 지속적으로 달성하는 유일한 방법은 지난 요청이 거부된 이유를 찾아내는 것이다.

먼저, 실제로 차단인지 확인한다

외부에서 보면 비슷해 보이지만 서로 다른 의미를 갖는 네 가지가 있다.

**속도 제한(rate limit)**은 일시적이며 속도와 관련이 있다. 보통 429로 나타나며 때로는 Retry-After가 함께 오고, 속도를 늦추면 스스로 해소된다. 여기에 주소를 로테이션하는 것으로 대응하는 것은 전형적인 실수인데, 새 주소에서 같은 속도를 유지하는 것이야말로 속도 제한을 지속적인 차단으로 바꾸는 패턴이기 때문이다.

**차단(block)**은 특정 주소나 세션을 겨냥한 거부로, 챌린지 페이지, 지속적인 403, 인터스티셜 등의 형태로 나타난다. 이 경우에는 새로운 신원이 실제로 도움이 된다.

**소프트 차단(soft block)**은 위험한 경우인데, 200을 반환하기 때문이다. 챌린지 페이지, 일반적인 결과, 잘린 목록, 랜딩 페이지로의 리다이렉트 모두 데이터처럼 보이는 것으로 파싱될 수 있으며, 상태 코드만 세는 파이프라인은 아무것도 수집하지 못하면서 정상이라고 보고할 것이다. 응답 본문을 검증하지 않는다면 이를 성공과 전혀 구별할 수 없다. 자세한 내용은 차단되거나 가짜인 콘텐츠 탐지하기를 참고하라.

자체 버그는 초기에 배제해볼 가치가 있다. 잘못된 형식의 사용자 이름 플래그는 407을 반환하고, 지나치게 좁은 필터는 502를 반환하며, 파서 변경으로 정상 페이지가 비어 있는 것처럼 보일 수 있다. 이들 중 어느 것도 차단이 아니다.

빠른 테스트 방법은 완전히 다른 경로, 이상적으로는 다른 국가에서, 그리고 일반 연결로 같은 URL을 요청해보는 것이다. 모든 것이 실패한다면 타겟 자체에 문제가 있거나 요청 형식이 잘못된 것이다. 프로덕션 경로만 실패한다면 실제 신원 문제가 있는 것이다.

그다음, 범위를 파악한다

문제의 규모는 원인이 얼마나 깊은지를 알려준다.

세션 하나가 실패하고 다른 세션들은 성공하는 것은 일상적인 일이다. 해당 세션을 폐기하고 새 식별자를 가져와 계속 진행하면 된다. 로테이팅 풀에서는 이런 일이 끊임없이 일어나며 프록시 매니저 구축하기에서 설명한 자동 폐기 이상의 개입은 필요하지 않다.

경로 하나가 저하되는 것, 즉 다른 경로들은 유지되는데 특정 타겟과 국가 조합의 성공률만 떨어지는 것은 그 타겟에 접근하는 방식에 무언가 문제가 있음을 가리킨다. 이것이 흔하면서도 흥미로운 경우이며, 이 글의 나머지 부분에서 다루는 내용이다.

한 타겟으로 가는 모든 경로가 실패하는 것은 타겟이 방어책을 바꿨거나 장애를 겪고 있다는 뜻이며, 어디에서 오는지가 아니라 어떻게 보이는지를 바꾸지 않는 한 로테이션은 도움이 되지 않는다.

모든 타겟이 동시에 실패하는 것은 거의 차단이 아니다. 무엇보다 먼저 자체 배포, 자격 증명, 네트워크를 살펴봐야 한다.

경로 단위의 상태를 파악하는 것이 이 진단을 추측이 아니라 신속한 것으로 만들어주며, 이것이 대규모로 프록시 상태 모니터링하기의 요지다.

즉각적인 대응

경로가 실제로 차단되었을 때, 본능적으로는 더 밀어붙이고 싶어진다. 그 반대로 해야 한다.

해당 경로로의 전송을 멈춘다. 거부하고 있는 타겟을 계속 두드리면 문제가 심화되고, 사용할 수 없는 응답에 대역폭을 낭비하며, 새로 접근하는 각 주소마다 플래그가 붙으면서 피해가 확산된다. 서킷 브레이커가 사람의 개입을 기다리지 않고 자동으로 이를 처리해야 한다.

공격적으로 재시도하지 않는다. 차단하고 있는 타겟에 대한 재시도 폭주는 좁은 문제를 넓은 문제로 바꾸는 가장 빠른 방법이며, 그래서 재시도에는 루프가 아니라 예산과 분류가 필요하다. 자세한 내용은 재시도와 백오프를 참고하라.

기다린다. 대부분의 차단은 시간이 제한되어 있다. 수십 분에서 몇 시간의 쿨다운이 상태를 완전히 해소하는 경우가 많으며, 쿨다운 중에 재개하면 시계가 다시 시작된다.

주소뿐 아니라 신원을 바꾼다. 차단이 어디에서 왔는지가 아니라 어떻게 보였는지에서 비롯되었다면, 새 주소만으로는 문제가 된 부분이 전혀 바뀌지 않는다.

실제 원인 찾기

차단은 네 가지 원인에서 비롯되며, 대략 빈도 순서대로 확인해볼 가치가 있다.

속도. 너무 많은 요청이 너무 규칙적으로 너무 적은 주소에서 발생하는 것. 완벽하게 균일한 간격 자체가 하나의 신호가 되는데, 사람의 트래픽은 불규칙하고 몰리는 경향이 있기 때문이다. 해결책은 주소당 낮은 요청 빈도, 지터, 더 넓은 분산이다. 자세한 내용은 속도 제한과 스로틀링실제로 필요한 프록시 IP 수의 분산 계산을 참고하라.

요청 형태. 주장하는 브라우저와 일치하지 않는 헤더, 누락된 클라이언트 힌트, 종료 국가와 모순되는 Accept-Language, 또는 User-Agent는 Chrome이라고 말하는데 TLS 지문은 Python이라고 말하는 것. 이는 부재가 아니라 모순이며, 탐지하기 쉽다. 자세한 내용은 올바른 헤더 설정하기geo, timezone, locale 맞추기를 참고하라.

행동. 사람이라면 하지 않을 순서로 엔드포인트를 두드리거나, 브라우저라면 로드할 것을 전혀 로드하지 않거나, 플로우 도중에 신원을 로테이션하거나, 페이지네이션 시퀀스를 기계 속도로 크롤링하는 것. 스크립트에게만 이치에 맞는 시퀀스는 스크립트로 인식되기 쉽다.

주소 품질. 때로는 실제로 풀 자체의 문제다. 평판이 나쁜 주소는 행동과 무관하게 챌린지를 유발하며, 레지덴셜 풀이라고 하면서 데이터센터 공간이 섞여 있으면 실제로 데이터센터 공간처럼 동작한다. 자세한 내용은 레지덴셜로 판매되는 데이터센터 IP 찾아내기를 참고하라.

경로가 차단되었는데 속도와 요청 형태가 모두 문제가 없다면, 그때는 주소 품질이 첫 번째 가정이 아니라 유력한 가설이 된다.

반복하지 않으면서 재개하기

잘못 돌아오는 것이야말로 해소된 차단이 반복되는 차단으로 바뀌는 방식이다.

전체 작업이 아니라 카나리아부터 시작한다. 새 세션을 통해 몇 건의 요청을 보내고 제대로 검증하여 타겟이 다시 받아들이고 있는지 확인한다. 통과한다면 이전 속도로 바로 재개하지 말고 점진적으로 늘려간다. 문제를 일으켰던 속도로 즉시 돌아가는 것 자체가 알아볼 수 있는 패턴이기 때문이다. 재개하기 전에 무언가를 바꾼다. 속도든, 헤더든, 세션 전략이든, 지리적 위치든 상관없다. 동일하게 재개하는 것은 차단이 무작위였다는 데 거는 도박이기 때문이다. 그리고 늘려가는 동안 검증된 성공률을 지켜보면서, 다음 날 아침이 아니라 처음 몇 분 안에 상황을 파악한다.

이 모든 것을 거친 후에도 타겟이 지속적으로 적대적이라면, 정직한 선택지는 그 타겟에 대한 야심을 줄이거나, 다른 방식으로 접근하거나, 비용을 감당할 가치가 없다고 받아들이는 것이며, 이는 강력하게 보호된 사이트 스크래핑하기에서 다룬 에스컬레이션 논리다.

결론

먼저 네 가지 비슷해 보이는 것들을 구분한다. 로테이션으로 대응한 속도 제한은 악화되고, 성공으로 집계된 소프트 차단은 눈에 보이지 않기 때문이다. 범위를 파악한다. 세션 하나의 실패는 일상적이고, 경로 하나의 저하는 원인을 찾을 가치가 있으며, 모든 것이 한꺼번에 실패하는 것은 대개 자체 배포의 문제다. 경로가 실제로 차단되었을 때는 밀어붙이지 말고 멈추고, 재시도로 파고들지 말고, 쿨다운을 기다리고, 주소뿐 아니라 신원을 바꾼다. 그다음 가능성이 높은 순서로 원인을 찾는다. 속도, 요청 형태, 행동, 그리고 마지막으로 풀 품질이다. 카나리아와 점진적인 증가로 재개하되 무언가를 바꾼 상태로, 그러는 동안 검증된 성공률을 지켜본다. 로테이팅 풀에서 주소는 결코 자산이 아니었다. 자산은 접근이며, 접근은 평범해 보임으로써 얻어진다.

깨끗하게 재개할 곳이 있다는 것은 레지덴셜 프록시가 제공하는 것이다. 국가 및 도시 타겟팅이 가능한 실제 가정용 등급 주소의 대규모 풀이 있어 폐기된 세션이 재사용되지 않고 교체되며, GB당 요금제는 원칙을 지키는 회복이 고집스러운 회복보다 더 저렴하게 만들어준다.

시작할 준비가 되셨나요?

205M개 이상의 IP, 195개 이상의 국가를 지원하는 Shifter의 레지덴셜 프록시를 $0.75/GB부터 이용해보세요.

시작하기