이 가이드에서는 다음을 확인할 수 있습니다:
- 자바스크립트 중심 사이트란 무엇인가.
- 브라우저 렌더링을 통한 스크래핑의 과제와 방법.
- – AJAX 호출 가로채기 작동 방식 및 한계점.
- 자바스크립트 중심 웹사이트 스크래핑을 위한 현대적 솔루션.
자, 시작해 보겠습니다!
자바스크립트 중심 웹사이트란 무엇인가?
웹 스크래핑 영역에서, 수집할 데이터가 서버가 반환한 초기 HTML 문서에 포함되어 있지 않은 사이트를 “자바스크립트 중심” 사이트라고 합니다. 대신 실제 콘텐츠는 사용자의 브라우저에서 자바스크립트에 의해 동적으로 가져와 렌더링됩니다.
사이트가 자바스크립트를 사용하는 방식은 데이터 추출 방법에 직접적인 영향을 미칩니다. 일반적으로 자바스크립트 기반 사이트는 다음 세 가지 주요 패턴을 따릅니다:
- 단일 페이지 애플리케이션(SPA): SPA는 특정 섹션을 서버의 새 콘텐츠로 업데이트하기 위해 자바스크립트에 의존하는 하나의 웹 페이지입니다. 즉, 전체 웹 애플리케이션이 단일 웹페이지로 구성되어 사용자의 상호작용마다 페이지가 재로드되지 않습니다.
- 사용자 주도 상호작용: 특정 동작을 수행한 후에만 콘텐츠가 표시됩니다. “더 보기” 버튼이나 동적 페이지네이션이 대표적 예시입니다.
- 비동기 데이터: 많은 사이트가 속도 향상을 위해 기본 페이지 레이아웃을 먼저 로드한 후, AJAX를 사용해 백그라운드에서 데이터를 가져옵니다. 이 메커니즘은 페이지 재로딩 없이 주가 정보를 새로 고치는 것과 같은 실시간 업데이트에 흔히 사용됩니다.
전체 브라우저 렌더링을 통한 자바스크립트 중심 사이트 스크래핑
브라우저 자동화 도구를 사용하면 웹 브라우저를 실행하고 제어하는 스크립트를 작성할 수 있습니다. 이를 통해 페이지 완전 렌더링에 필요한 자바스크립트를 실행할 수 있습니다. 이후 해당 도구가 제공하는 HTML 요소 선택 및 데이터 추출 API를 활용하여 필요한 데이터를 추출할 수 있습니다.
이는 자바스크립트 중심 사이트 스크래핑의 기본 접근법이며, 다음 섹션에서 이를 소개합니다:
- 자동화 도구의 작동 방식
- 헤드리스(headless) 모드와 “헤드풀(headful)” 모드란 무엇인가.
- 이 접근법의 문제점과 해결책
- 가장 널리 사용되는 브라우저 자동화 도구.
자동화 도구의 작동 방식
브라우저 자동화 도구는 프로토콜(예: CDP 또는 BiDi)을 사용하여 브라우저에 직접 명령을 전송하는 방식으로 작동합니다. 간단히 말해, “이 URL로 이동”, “이 요소를 찾기”, “이 버튼 클릭”과 같은 명령을 내릴 수 있는 완전한 API를 제공합니다.
브라우저는 스크래핑 스크립트에 설명된 상호작용에 필요한 자바스크립트를 실행하며 해당 명령을 페이지에서 실행합니다. 브라우저 자동화 도구는 렌더링된 DOM(문서 객체 모델)에도 접근할 수 있습니다. 바로 여기서 스크래핑할 데이터를 찾을 수 있습니다.
헤드리스 브라우저 vs “헤드풀” 브라우저
브라우저를 자동화할 때는 실행 방식을 결정해야 합니다. 일반적으로 두 가지 모드 중 선택합니다:
- 헤드풀(Headful): 브라우저가 완전한 그래픽 인터페이스로 실행됩니다. 마치 사람이 직접 열었을 때와 같습니다. 화면에 브라우저 창이 표시되며 스크립트가 클릭, 입력, 탐색하는 과정을 실시간으로 확인할 수 있습니다. 이는 스크립트가 예상대로 작동하는지 시각적으로 확인하는 데 유용합니다. 또한 반봇 시스템에 실제 사용자 활동처럼 보이게 할 수 있습니다. 반면 GUI를 사용한 브라우저 실행은 리소스 집약적입니다(브라우저가 메모리를 많이 소모한다는 것은 잘 알려진 사실입니다). 이로 인해 웹 스크래핑 속도가 느려집니다.
- 헤드리스: 브라우저가 가시적 인터페이스 없이 백그라운드에서 실행됩니다. 시스템 리소스 사용량이 적고 훨씬 빠릅니다. 이는 특히 서버에서 수백 개의 병렬 인스턴스를 실행할 때 프로덕션 스크레이퍼의 표준 방식입니다. 단점으로는, 신중하게 구성하지 않으면 GUI 없는 브라우저가 의심스러워 보일 수 있습니다. 시장에서 가장 우수한 헤드리스 브라우저를 알아보세요.
브라우저 렌더링 관련 과제와 해결책
자바스크립트가 많이 사용되는 웹사이트를 다룰 때 브라우저 자동화는 첫 단계에 불과합니다. 이러한 사이트를 스크래핑할 때 반드시 직면하게 되는 두 가지 주요 도전 과제는 다음과 같습니다:
- 복잡한 네비게이션: 스크래핑 스크립트는 단순한 명령어 실행기를 넘어선 능력이 필요합니다. 전체 사용자 여정을 처리하도록 프로그래밍해야 합니다. 이는 새 콘텐츠 로딩 대기, 무한 스크롤 처리 등 복잡한 네비게이션 흐름을 스크래핑하는 코드 작성을 의미합니다. 자바스크립트 중심 사이트 스크래핑에는 다중 페이지 양식, 드롭다운 메뉴 처리 등이 포함됩니다.
- 반봇 시스템 회피: 브라우저 자동화가 제대로 적용되지 않으면 반봇 시스템이 감지할 수 있는 위험 신호가 됩니다. 브라우저 자동화 도구로 스크래핑을 성공시키려면 스크래퍼가 다음과 같은 과제를 해결하여 인간처럼 보이도록 해야 합니다:
- 브라우저 지문 인식: 안티봇은 클라이언트 브라우저의 수백 가지 데이터 포인트를 분석하여 고유한 서명을 생성합니다. 여기에는 사용자 에이전트 문자열, 화면 해상도, 설치된 글꼴, WebGL 렌더링 기능 등이 포함됩니다. 기본 자동화 설정은 쉽게 식별됩니다. 헤드리스 모드가 아닌 사용자 에이전트(User-Agent)를 설정하는 것이 좋은 방법입니다. 또한 undetected-chromedriver와 같은 특수 도구가 필요할 수 있는데, 이는 여러 브라우저 옵션을 수정하여 일반 사용자의 브라우저처럼 보이게 합니다.
- 행동 분석: 안티봇은 스크레이퍼가 페이지와 상호작용하는 방식도 감시합니다. 페이지 로드 후 5밀리초 만에 버튼을 클릭하는 스크립트는 명백히 인간이 아닙니다. 행동이 로봇으로 표시되면 방어 시스템이 차단할 수 있습니다.
- CAPTCHA: CAPTCHA는 브라우저 자동화에 기반한 스크래핑 방식에 있어 종종 최종 장벽이 됩니다. 표준 자동화 스크립트는 이를 자체적으로 해결할 수 없기 때문입니다. 이를 극복하려면 CAPTCHA 해결 서비스를 통합해야 합니다.
자세한 안내는 동적 사이트 스크래핑 가이드를 참조하십시오.
주요 브라우저 자동화 프레임워크
브라우저 자동화를 위한 주요 프레임워크 3종은 다음과 같습니다:
- Playwright: 마이크로소프트의 최신 프레임워크입니다. 현대적 사이트의 복잡성을 처리하도록 처음부터 설계되었습니다. 이로 인해 새로운 스크래핑 프로젝트에 최적의 선택지입니다. JavaScript, Python, C#, Java로 제공되며 커뮤니티를 통해 추가 언어 지원이 가능합니다. 따라서 Playwright를 활용한 웹 스크래핑은 대부분의 개발자에게 적합한 선택입니다.
- Selenium: 웹 자동화의 오픈소스 거인입니다. 가장 큰 강점은 다재다능함에 있습니다. 특히 거의 모든 프로그래밍 언어와 브라우저를 지원하며, 광범위하고 성숙한 생태계를 갖추고 있습니다. 이 때문에 Selenium은 스크래핑용 브라우저 자동화 도구로 널리 사용됩니다.
- 퍼피티어(Puppeteer): Google이 개발한 라이브러리로, CDP(Chrome DevTools Protocol)를 통해 Chrome 및 Chromium 기반 브라우저를 세밀하게 제어할 수 있습니다. 현재 Firefox도 지원합니다. 이 라이브러리를 사용하면 제어된 브라우저에서 사용자 행동을 시뮬레이션하여 일반 사용자로 위장할 수 있습니다. 이로 인해 퍼피티어는 웹 스크래핑에 널리 활용됩니다.
최고의 브라우저 자동화 도구에 관한 저희 저장소에서 이러한 솔루션(및 기타 솔루션)을 비교해 보세요.
대체 방법: AJAX 호출 복제
브라우저에서 시각적 웹페이지 전체를 렌더링하는 비용을 감수하는 대신 탐정 같은 접근법을 취할 수 있습니다. 웹사이트 프론트엔드가 백엔드에 직접 수행하는 API 호출을 식별한 후 직접 복제하는 방법입니다.
이러한 API 호출은 일반적으로 사이트가 나중에 페이지에 렌더링하는 원시 데이터를 반환하므로 직접 타겟팅할 수 있습니다. 이 기술은 AJAX 호출을 모방하는 데 의존하며 일반적으로 API 웹 스크래핑으로 알려져 있습니다.
그 작동 방식을 살펴보겠습니다!
AJAX 호출 복제 방식의 작동 원리
AJAX 복제는 실용적인 스크래핑 기법입니다. 핵심 아이디어는 웹 애플리케이션이 백엔드에서 데이터를 가져오기 위해 수행하는 네트워크 요청(보통 AJAX 호출)을 모방하여 전체 페이지 렌더링을 우회하는 것입니다.
대략적으로 두 가지 주요 단계로 이루어집니다:
- 스누핑(Snoop): 브라우저의 개발자 도구(일반적으로 “네트워크” 탭에 “Fetch/XHR” 필터 활성화)를 열고 웹사이트와 상호작용하세요. 새 데이터가 로드될 때 백그라운드에서 어떤 API 호출이 이루어지는지 관찰합니다. 예를 들어 무한 스크롤 중이거나 “더 보기” 버튼을 클릭할 때입니다.
- 재현: 적절한 API 요청을 식별한 후 해당 요청의 URL, HTTP 메서드(GET, POST 등), 헤더, 페이로드(있는 경우)를 기록하세요. 그런 다음 Python의 Requests 같은 HTTP 클라이언트를 사용해 스크래핑 스크립트에서 이 요청을 재현하세요.
이러한 API 엔드포인트는 일반적으로 구조화된 형식(대부분 JSON)으로 데이터를 반환합니다. 이는 HTML을 파싱하는 번거로움 없이 JSON 데이터에 접근할 수 있다는 큰 장점입니다.
예를 들어, 무한 스크롤링을 통해 데이터를 추가로 불러오는 사이트의 API 호출을 살펴보겠습니다:

이 경우 위의 무한 스크롤링 API 호출을 재현한 후 데이터에 접근하는 간단한 스크래핑 스크립트를 작성할 수 있습니다.
AJAX 호출 가로채기의 주요 과제
이 접근 방식은 작동할 때 빠르고 효과적이며 간단합니다. 그러나 몇 가지 어려움이 따릅니다:
- 난독화된 페이로드: API가 암호화된 페이로드를 요구하거나 깔끔하고 읽기 쉬운 JSON을 반환하지 않을 수 있습니다. 특정 자바스크립트 함수만이 해독할 수 있는 암호화된 문자열일 수 있습니다. 이는 리버스 엔지니어링이 필요한 스크래핑 방지 조치입니다.
- 동적 엔드포인트 및 헤더: API 엔드포인트와 호출 방식(예: 적절한 헤더 설정, 올바른 페이로드 추가 등)은 시간이 지남에 따라 변경됩니다. 이 솔루션의 주요 도전 과제는 API의 어떤 진화도 스크레이퍼를 중단시킬 수 있다는 점입니다. 기능 복원을 위한 코드 유지보수가 필요하며, 이는 대부분의(하지만 곧 보게 될 것처럼 전부는 아닌) 웹 스크래핑 접근 방식에서 흔히 발생하는 문제입니다.
- TLS 지문 인식: 가장 진보된 안티봇은 프로그램의 디지털 서명인 “TLS 핸드셰이크”를 분석합니다. 이들은 크롬에서 온 요청과 표준 파이썬 스크립트에서 온 요청을 쉽게 구분할 수 있습니다. 이를 우회하려면 브라우저의 TLS 서명을 모방할 수 있는 특수 도구가 필요합니다.
자바스크립트 중심 사이트 스크래핑의 현대적 접근법: AI 기반 브라우저 스크래핑 에이전트
지금까지 설명한 방법들은 여전히 주요 과제에 직면해 있습니다. 자바스크립트 중심 사이트를 스크래핑하기 위한 보다 현대적인 해결책은 패러다임 전환을 요구합니다. 핵심은 명령형 명령어 작성에서 벗어나 AI 기반 브라우저 에이전트를 활용해 선언적 목표를 정의하는 방식으로 전환하는 것입니다.
에이전트 브라우저는 페이지의 콘텐츠, 컨텍스트, 시각적 레이아웃을 이해하는 LLM(대규모 언어 모델)이 통합된 브라우저입니다. 이는 웹 스크래핑 접근 방식을 근본적으로 변화시키며, 특히 자바스크립트 중심 웹사이트에서 두드러집니다.
이러한 사이트는 일반적으로 원하는 데이터를 로드하기 위해 복잡한 사용자 상호작용을 요구합니다. 기존 방식에서는 스크립트에 해당 상호작용을 재현하는 로직을 직접 주입해야 했습니다. 이 접근법은 본질적으로 취약하고 유지보수가 까다롭습니다. 문제는 사용자 흐름이 변경될 때마다 자동화 로직을 수동으로 업데이트해야 한다는 점입니다.
AI 기반 브라우저 에이전트 덕분에 이러한 문제를 모두 피할 수 있습니다. 간단한 설명형 프롬프트만으로도 사이트 UI나 흐름이 변경되더라도 적응하는 효과적인 자동화를 구현할 수 있습니다. 이러한 유연성은 큰 장점이며 다양한 자동화 가능성을 열어주기에, 에이전트형 AI가 빠르게 주목받고 있습니다.
하지만 아무리 강력한 AI 브라우저 에이전트 라이브러리를 사용하더라도, 스크래핑 로직은 여전히 일반 브라우저에 의존합니다. 이는 브라우저 지문 인식이나 CAPTCHA 같은 문제에 취약하다는 의미입니다. 또한 속도 제한과 IP 차단으로 인해 이러한 솔루션의 확장도 어려워집니다.
진정한 해결책은 모든 에이전트 라이브러리와 통합되며 차단되지 않도록 설계된 클라우드 기반의 AI 지원 스크래핑 플랫폼입니다. 바로 Bright Data의 Agent Browser가 제공하는 솔루션입니다.
에이전트 브라우저는 차단되지 않는 원격 브라우저에서 AI 기반 워크플로를 실행할 수 있게 합니다. 무한한 확장성을 지원하며 헤드리스 및 헤드풀 모드를 모두 지원하고, 세계에서 가장 신뢰할 수 있는 프록시 네트워크로 구동됩니다.
결론
이 글에서는 자바스크립트 중심 웹사이트의 정의와, 해당 사이트에서 데이터를 스크래핑할 때 발생하는 일반적인 문제점 및 해결책을 살펴보았습니다. 설명된 각 구현 방식에는 한계가 있지만, 가장 뛰어난 방법은 에이전트 브라우저를 활용하는 것입니다.
앞서 논의한 바와 같이, Bright Data의 에이전트 브라우저는 가장 널리 사용되는 에이전트형 AI 라이브러리와 통합하면서 모든 일반적인 스크래핑 문제를 해결할 수 있게 해줍니다.
고급 AI 스크래핑 에이전트를 사용한다면 웹 콘텐츠를 검색, 검증, 변환할 수 있는 신뢰할 수 있는 도구가 필요합니다. 이러한 모든 기능과 더 많은 것을 위해 Bright Data의 AI 인프라를 살펴보세요.
Bright Data 계정을 생성하고 AI 에이전트 개발을 위한 모든 제품과 서비스를 체험해 보세요!