로컬에서 잘 작동하는 스크래핑 스크립트도 온라인에서 한동안 실행하면 차단될 수 있습니다. 보통 요청 빈도, 요청 특성, 렌더링 환경 같은 여러 신호가 겹쳐 원인이 됩니다. 안티봇 방어가 계속 발전하는 만큼 robots 규칙을 지키고 요청 속도를 제한하며 공개 데이터만 수집하는 방식이 더 안정적입니다.
로컬에서 정상적으로 동작하던 스크래핑 스크립트도 온라인에서 한동안 실행하면 멈출 수 있습니다. 403 응답이 오거나 검증 페이지로 이동하거나 빈 HTML만 받는 경우는 대체로 같은 원인을 가리킵니다. 사이트의 보호 시스템이 해당 접근을 일반 사용자와 다르다고 판단한 것입니다.

스크립트가 계속 실패하는 이유
안티봇 방어는 하나의 기술이 아니라 여러 단계의 판정을 겹쳐 사용하는 방식입니다. 가장 먼저 문제가 되는 경우가 많은 것은 빈도입니다. 같은 IP가 짧은 시간에 같은 경로로 많은 요청을 보내고 간격까지 정확히 일정하면 매우 쉽게 식별되는 패턴이 됩니다. 감지되면 우선 속도 제한이 걸리고, 심한 경우 IP가 바로 차단됩니다.
다음 단계는 정체성입니다. 요청에 스크립트 라이브러리의 기본 User-Agent가 포함되거나, 일반 브라우저가 보내는 헤더가 빠져 있거나, Chrome이라고 주장하면서 그에 맞는 JavaScript 실행 환경과 렌더링 결과를 제공하지 못하면 불리한 신호로 기록될 수 있습니다. CDN 뒤에 있는 사이트는 JavaScript challenge를 추가하기도 합니다. 먼저 코드를 반환하고 이를 실행해야 실제 콘텐츠를 받을 수 있도록 하는 방식입니다. 단순 HTTP 요청 라이브러리는 실행 결과를 만들 수 없으므로 그 단계에서 멈춥니다.
행동 신호도 뚜렷합니다. 실제 사용자는 이미지와 CSS를 로드하고, 스크롤하며, 중간에 멈춥니다. 반면 스크립트는 HTML만 받고 바로 종료하는 경우가 많습니다. 사이트는 이런 신호를 합쳐 점수를 계산하고, 임계값 아래로 내려가면 CAPTCHA를 표시합니다.
이 메커니즘은 계속 발전하고 있습니다. 보호 제공자가 판정 로직을 바꿀 때마다 고정 파라미터와 고정 주기에 의존하는 스크립트는 다시 수정해야 합니다. 파라미터를 더 많이 붙일수록 스크립트는 비대해지고, 오히려 실제 사용자 같은 동작을 유지하기 어려워집니다. 하나의 스크립트로 모든 사이트를 처리할 수 있다는 전제 자체가 현실적이지 않습니다.
보호 기능을 우회하는 것이 선택지가 아닌 이유
온라인에는 보호 기능을 우회하는 방법을 설명한 글이 많지만, 이는 단순한 기술 선택이 아닙니다. 사이트 이용약관을 위반할 수 있습니다. 서비스 약관은 보안 조치와 접근 제한의 우회를 금지하는 경우가 일반적입니다. 기술적으로 가능하다는 사실이 계약상 또는 법적으로 정당하다는 뜻은 아닙니다.
대가도 분명합니다. 계정과 IP 차단이 가장 직접적인 결과입니다. 여러 관할권에서는 기술적 조치를 우회해 데이터를 얻는 행위가 위법이 될 가능성도 있습니다. 비정상적인 방식으로 확보한 데이터는 출처와 완전성을 추적하기 어려워 후속 의사결정에 사용할수록 위험이 커집니다. 기술 문제를 컴플라이언스 문제로 바꾸는 것은 합리적이지 않습니다.
규정을 지키는 수집의 기본 원칙
먼저 robots 규칙과 이용약관을 확인합니다. robots.txt에는 어떤 경로의 크롤링이 허용되는지 표시됩니다. 단순한 참고사항이 아니라 사이트 운영자가 밝힌 의사입니다. 이용약관에는 데이터 사용에 대한 더 세부적인 제한이 있을 수 있습니다.
공식 API가 있다면 우선 사용합니다. 데이터 구조가 명확하고 문서와 할당량이 있으며, 프런트엔드 개편 때문에 전체 연동이 한꺼번에 깨지지도 않습니다. 할당량이 부족하면 수집 계획을 낮추거나 비즈니스 채널을 통해 더 높은 한도를 요청할 수 있습니다. 제한을 우회하는 것보다 안정적입니다.
요청 빈도도 통제해야 합니다. 크롤링이 허용된다고 해서 사이트 대역폭을 최대한 사용해도 된다는 뜻은 아닙니다. 요청 사이에 간격을 두고, 일정 시간당 요청 수를 제한하며, 피크 시간을 피하면 대부분의 마찰을 예방할 수 있습니다.
공개 데이터만 수집하고 개인정보는 건드리지 않습니다. 로그인해야 볼 수 있는 콘텐츠나 사이트가 명시적으로 수집을 금지한 데이터는 가져오지 않습니다. 개인정보는 법률로 엄격하게 보호되며, 수집하려면 명확한 법적 근거와 필요한 경우 사용자 동의가 있어야 합니다. 이는 기술 문제가 아닙니다.
렌더링된 콘텐츠가 꼭 필요하다면
일부 페이지는 JavaScript가 실행된 뒤에야 콘텐츠가 표시되어 단순 요청 라이브러리만으로는 가져올 수 없습니다. 이런 경우 브라우저 자동화 도구로 페이지를 열고 렌더링된 DOM을 읽을 수 있습니다. 다만 정상적인 속도로 접근하고, 같은 사이트에 수십 개 인스턴스를 동시에 실행하지 않으며, 사이트가 자동 접근을 명확히 금지한다면 자동화 방식으로 접근하지 않는다는 기준을 지켜야 합니다.
여기에는 혼동하기 쉬운 경계가 있습니다. 다중 환경 도구의 정당한 용도는 여러 합법적인 계정을 서로 분리하는 것입니다. 예를 들어 팀이 여러 고객의 백오피스에 동시에 로그인해 데이터를 확인하는 경우입니다. 반면 서로 다른 수많은 사용자로 가장해 같은 사이트를 스크래핑하는 데 쓰는 것은 정당한 용도가 아닙니다. 전자는 계정 관리이고, 후자는 사이트의 접근 제한을 우회하는 것입니다.
자주 묻는 질문
IP를 바꾸는 것은 판정 요소 하나만 바꾸는 것입니다. 헤더, 요청 빈도, fingerprint 특성이 그대로라면 곧 같은 장벽에 다시 막힙니다. IP를 너무 자주 바꾸는 행위 자체가 이상 신호가 될 수도 있습니다.
API 할당량이 작다면 할당량에 맞춰 수집량을 줄이거나 비즈니스 채널을 통해 더 높은 한도를 신청합니다. 제한 우회보다 크게 느리지 않은 경우가 많고, 데이터 출처도 깔끔하고 추적 가능하게 유지됩니다.
공개되어 있다는 것과 자유롭게 사용할 수 있다는 것은 다른 문제입니다. 사이트 약관, 데이터의 저작권 상태, 이후의 사용 목적도 확인해야 합니다. 개인정보가 포함되면 특히 더 신중해야 합니다.
마무리
스크래핑이 차단됐다는 것은 사이트가 이미 해당 접근을 일반 사용자와 다르다고 판단했다는 뜻입니다. 현실적인 방향은 두 가지입니다. 접근 동작을 정상 범위로 되돌리거나 공식 인터페이스로 전환하는 것입니다. 보호 기능 우회는 지름길처럼 보이지만 실제로는 위험을 기술 영역에서 컴플라이언스 영역으로 옮기는 것뿐입니다.

