여덟 개의 봇 탐지기에서 본 bauta와 기본 Playwright
같은 프록시 출구로 한 번 돌린 결과입니다. BrowserScan, CreepJS, pixelscan 등 여덟 탐지기가 bauta와 기본 Playwright를 어떻게 읽는지, 그리고 페이지가 각각에서 무엇을 읽는지 정리했습니다.
봇 탐지기는 페이지 안에서 브라우저를 읽습니다. navigator가 무엇이라고 답하는지, 페이지가 어떻게 조작되고 있는지,
그리고 지문의 각 부분이 서로 맞는지를 봅니다. 2026년 10월 21일, 이런 탐지기 여덟 개와 그 바탕이 되는 페이지 읽기를
기본 Playwright와 bauta에 대해 돌렸습니다.
어떻게 돌렸나
- 기본 Playwright 1.60.0: 스크립트가 띄우는 그대로입니다. 자체 Chromium 148, 헤드리스, 사이트마다 새 페이지.
- bauta: 가상 디스플레이 위의 게이트웨이를 거쳐 Windows 기기로 돌렸고,
humanize를 켰으며, 시간대와 로캘은 프록시가 나가는 곳을 따랐습니다. - 같은 프록시 출구로 두 브라우저를 차례로, 12분 안에 돌렸습니다.
탐지기
판정은 홈페이지의 비교와 같은 말로 옮겼고, 탐지기가 쓰는 이름(WEBDRIVER, mainWorldExecution)은 원문 그대로 둡니다.
| 탐지기 | 기본 Playwright | bauta |
|---|---|---|
| BrowserScan 판정 | Robot | Normal |
| incolumitas 실패한 검사 | 검사 13개 실패 | WEBDRIVER만 (어떤 Chrome이든 걸림) |
| deviceandbrowserinfo 판정 | 봇, 신호 7개 | 사람 |
| rebrowser 흔적 | 흔적 11개 | mainWorldExecution만 (페이지의 world에서 도는 Playwright의 evaluate) |
| pixelscan 지문 | 일관되지 않음: 마스킹 탐지, 자동화 동작 탐지 | 일관됨 |
| iphey 점수 | 30 | 70 |
| fingerprint-scan 봇 점수(100점 만점) | 100 | 29 |
| CreepJS 헤드리스 유사도 | 헤드리스 유사도 94 %, 헤드리스 100 % | 헤드리스 유사도 25 %, 헤드리스 0 % |
bauta에 남은 두 표시는 Playwright 자체의 것입니다. 어떤 Chrome이든 걸리는 incolumitas의 WEBDRIVER 규칙, 그리고
Playwright의 evaluate가 페이지의 world에서 돈다는 rebrowser의 보고입니다.
페이지가 읽는 것
| 읽는 값 | 기본 Playwright | bauta |
|---|---|---|
navigator.webdriver | true | false |
window.chrome | 없음 | 있음 |
navigator.plugins.length | 0 | 5 |
| User-Agent | HeadlessChrome/148 | Chrome/155 |
| 페이지의 CDP 클라이언트 (deviceandbrowserinfo) | 탐지됨 | 탐지 안 됨 |
| TLS 핸드셰이크, JA4 (tls.peet.ws) | Chromium 148 자체 | Google Chrome 155 |
결과가 다른 이유
bauta는 이 값들을 엔진 안에서 페르소나로부터 답합니다. User-Agent와 Client Hints, navigator, 화면, WebGL이 서로
맞는 것은 모두 한 기기에 대한 한 가지 설명에서 나오기 때문이고, 값을 바꾸려고 페이지에 JavaScript를 넣지 않으므로
페이지는 여전히 Chromium 고유의 네이티브 getter를 봅니다. 기본 Playwright의 헤드리스 Chromium은 자기 자신을 그대로
보고합니다.