피드로 돌아가기
Headless Browser Detection: How Sites Know You're a Bot
Dev.toDev.to
Backend

웹사이트들이 navigator.webdriver, CDP 아티팩트, Canvas 지문, API 누락, 행동 분석, TLS 지문, IP 평판 등 7가지 기법으로 헤드리스 브라우저를 탐지하고 있으며, 엔지니어들이 각 기법에 대응하는 회피 방법을 조합해야 함

Headless Browser Detection: How Sites Know You're a Bot

agenthustler2026년 3월 26일9intermediate

Context

Puppeteer 같은 자동화 브라우저 도구는 테스트 환경에서는 정상 작동하지만 프로덕션 환경의 웹사이트에서는 봇으로 탐지되어 차단된다. 웹사이트들이 사용자 에이전트 검사를 넘어 복층적 탐지 기법을 도입했기 때문이다.

Technical Solution

  • navigator.webdriver 플래그 제거: Object.defineProperty()로 navigator.webdriver를 undefined로 오버라이드
  • Chrome DevTools Protocol(CDP) 아티팩트 삭제: undetected-chromedriver 라이브러리 사용으로 window.cdc_* 객체 제거
  • Canvas 및 WebGL 지문 위조: Canvas.toDataURL()과 WebGLRenderingContext.getParameter() 반환값을 실제 브라우저처럼 변조
  • 누락된 브라우저 API 재구성: navigator.plugins, navigator.languages, Notification API 등을 더미 값으로 주입
  • 인간다운 행동 시뮬레이션: 마우스 이동을 곡선 경로로 무작위 간격 추가, 스크롤을 자연스러운 딜레이와 함께 실행
  • TLS 지문 위장: curl_cffi 라이브러리로 Chrome 브라우저의 TLS 핸드셰이크 패턴 모방
  • 주거용 프록시 사용: 데이터센터 IP 대신 주거용 IP를 통해 IP 평판 체크 우회

Impact

아티클에 정량적 성과 지표가 명시되지 않음.

Key Takeaway

봇 탐지는 단일 기법으로 모든 보안을 제공하지 않고, 회피도 특정 기법 하나로는 완전하지 않으므로, 프로덕션 환경에서는 여러 회피 기법을 조합하거나 관리형 프록시 서비스를 사용하는 것이 자체 회피 인프라 유지보다 비용 효율적이다.


헤드리스 브라우저 자동화가 필요한 개발자는 navigator.webdriver 제거, CDP 아티팩트 삭제, Canvas/WebGL 지문 변조, 누락된 API 주입, 마우스/스크롤 행동 시뮬레이션, TLS 지문 위장, 주거용 프록시를 Playwright나 Puppeteer 스크립트에 조합해서 적용하면 다층 탐지 회피가 가능하다.

원문 읽기