2026년 10월 현재, 웹사이트가 AI 브라우저 에이전트를 탐지하는 방법은 에이전트 유형에 따라 세 가지로 나뉩니다. 스스로를 밝히는 크롤러와 사용자 요청형 페처는 user-agent 문자열, 공개된 IP 목록, 그리고 점점 늘어나는 암호 서명으로 잡아냅니다. 실제 Chromium을 구동하는 에이전틱 브라우저는 더 까다롭습니다. 평범한 Chrome 핑거프린트를 그대로 갖고 있기 때문에 주로 행동으로 탐지합니다. 커서가 움직이지 않고 순간이동하고, 텍스트를 입력하지 않고 붙여넣으며, 스크롤이 뚝뚝 끊겨 이동하는 식입니다. 이에 대한 옵트인 해법이 Web Bot Auth입니다. 에이전트가 요청에 서명하면 사이트는 추측하지 않고도 그 에이전트를 식별할 수 있습니다.
웹사이트가 AI 브라우저 에이전트를 탐지하는 방법: 세 가지 에이전트, 세 가지 방식
'AI 봇'은 하나의 범주가 아닙니다. AI 브라우저 에이전트를 탐지하려면 먼저 눈앞의 에이전트가 어떤 유형인지 가려내야 합니다. 유형마다 자신을 밝히는 방식이 다르고, 걸리는 신호도 다르기 때문입니다.
- 학습용·검색용 크롤러. 결과를 기다리는 사용자 없이 페이지를 대량으로 수집하는 페처로, GPTBot, OAI-SearchBot, ClaudeBot, Claude-SearchBot, PerplexityBot이 여기에 속합니다. user-agent 토큰을 밝히고 IP 대역을 공개하며, 벤더 스스로의 설명에 따르면 robots.txt를 준수합니다.
- 사용자 요청형 페처. 사람이 어시스턴트에게 질문하면 그 자리에서 페이지를 가져옵니다.
ChatGPT-User,Claude-User,Perplexity-User,Google-Agent가 그렇습니다. 여전히 자신을 밝히지만, 사람이 시작한 요청이라는 이유로 robots.txt가 적용되지 않을 수 있다고 밝힌 벤더가 여럿입니다. - 에이전틱 브라우저. 실제 Chromium 인스턴스가 사용자를 대신해 클릭하고 입력하고 스크롤합니다. 사용자 본인의 기기에서 돌기도 하고(Perplexity Comet, Claude in Chrome 확장 프로그램, 오픈소스 browser-use), 벤더의 클라우드에서 돌기도 합니다(ChatGPT agent, Manus). 이들이 브라우저처럼 보이는 이유는 실제로 브라우저이기 때문입니다.
2026년 7월 1일 발표된 Cloudflare의 분류 체계는 같은 트래픽을 행동 기준으로 나눕니다. Search, Agent('사람을 대신해 실시간으로' 동작), Training입니다. Agent 범주에는 '채팅 페치 봇(예: ChatGPT-User)과 브라우저 사용 에이전트(예: Chrome을 조작하는 Gemini나 Claude)'가 모두 명시적으로 포함됩니다. 2번과 3번 그룹은 정책상 같은 범주에 들지만, 탐지에는 전혀 다른 방법이 필요합니다.
스스로를 밝히는 에이전트: user-agent 토큰과 공개 IP (2026년 10월 확인)
1번과 2번 그룹의 탐지는 대부분 문서를 확인하는 일입니다. 주요 벤더는 모두 토큰과 IP 목록을 공개하므로 요청을 이와 대조하면 됩니다. UA 일치와 IP 일치가 함께 확인되면 신뢰할 수 있습니다. UA 일치만으로는 부족합니다. 그 문자열은 누구나 보낼 수 있기 때문입니다.
| 벤더 | 크롤러 / 검색 | 사용자 요청형 | 사용자 요청형의 robots.txt 적용 | IP 목록 |
|---|---|---|---|---|
| OpenAI | GPTBot, OAI-SearchBot | ChatGPT-User | '적용되지 않을 수 있음' | 봇별 JSON 파일 |
| Anthropic | ClaudeBot, Claude-SearchBot | Claude-User | 자사 봇이 robots.txt를 준수한다고 밝힘. Claude-User도 차단 가능 | claude.com/crawling/bots.json |
| Perplexity | PerplexityBot | Perplexity-User | '일반적으로 robots.txt를 무시함' | perplexity-user.json |
| Googlebot (AI 학습 활용 여부는 robots.txt의 Google-Extended 토큰으로 제어) | Google-Agent | '일반적으로 robots.txt를 무시함' | user-triggered-agents.json |
이런 선언은 벤더가 지킬 때만 의미가 있습니다. 2025년 8월 Cloudflare는 사이트들이 Perplexity의 공식 봇을 차단하자 범용 macOS용 Chrome user agent를 쓴 선언되지 않은 요청이 Perplexity의 공개 대역 밖 IP에서 ASN을 바꿔 가며 들어왔다고 발표했습니다. Cloudflare는 '머신러닝과 네트워크 신호의 조합'으로 이 트래픽을 식별했다고 밝히고 Perplexity를 검증된 봇 목록에서 제외했습니다. Perplexity는 이 설명에 반박했습니다. 누가 옳았든 사이트 운영자가 얻을 교훈은 분명합니다. UA·IP 규칙은 정직한 트래픽만 잡습니다. 정체를 밝히지 않기로 한 트래픽은 잡지 못합니다.
에이전틱 브라우저가 UA·IP 규칙을 통과하는 이유
사용자의 노트북에서 도는 에이전틱 브라우저는 그 사용자의 Chrome user agent, Chrome의 TLS·HTTP/2 핑거프린트, 사용자의 가정용 IP를 그대로 보냅니다. 요청 안에 UA나 IP 규칙이 걸 만한 것이 없습니다. 클라우드 호스팅 에이전트는 사정이 조금 나을 뿐입니다. IP가 클라우드 사업자 소유이긴 하지만, VPN 사용자, 기업 프록시, 이미 허용하고 있는 자동화 도구도 마찬가지이기 때문입니다.
FP-Agent 논문(Wang, Shafiq, Vekaria, arXiv 2605.01247, 2026년 5월)은 이를 직접 측정했습니다. 일곱 개 에이전트(OpenAI의 Atlas 브라우저와 ChatGPT agent, Claude for Chrome, Perplexity Comet, Manus, Browser Use, Skyvern)에게 항공권 예약, 쇼핑, 포럼 과제를 수행하게 하고 사람 참가자와 비교했습니다. Cloudflare 사례 연구에서는 'Manus만 Cloudflare에 완전히 차단되었고, 나머지 여섯 브라우징 에이전트는 과제를 성공적으로 마쳤습니다.' 브라우저 핑거프린트만으로 각 집단을 구분한 F1 점수는 0.7969였습니다. 저자들은 핑거프린트가 '기반 실행 환경과 상관관계가 있다'고 보았습니다. 로컬 에이전트는 호스트 기기의 핑거프린트를 그대로 물려받는다는 뜻입니다.
2025년 자료를 참고하는 분께 정정 하나: OpenAI는 2026년 8월 9일 Atlas 브라우저를 종료하고 에이전트 브라우징을 데스크톱 앱에 통합했습니다. 그래도 논문의 Atlas 결과는 여전히 유효합니다. 다른 제품에도 공통된 로컬 에이전트 패턴을 보여 주기 때문입니다.
에이전틱 브라우저를 여전히 드러내는 신호
에이전틱 브라우저는 환경보다 행동에서 훨씬 많이 드러납니다. FP-Agent 분류기는 행동 특성과 브라우저 특성을 결합해 논문 데이터셋에서 F1 1.0000을 기록했습니다. 일곱 개 에이전트와 세 가지 과제로 얻은 실험실 결과이지 실제 운영 환경의 탐지율은 아니지만, 방향은 벤더들이 보고하는 내용과 일치합니다.
커서 궤적과 입력 리듬
논문에서 가장 명확한 신호는 이것입니다. '브라우징 에이전트는 마우스 움직임을 전혀 보이지 않고 클릭 위치로 곧바로 순간이동한다.' 타이핑도 그만큼 특징적입니다. Atlas, ChatGPT agent, Comet은 텍스트를 붙여넣었고, ChatGPT agent의 Ctrl+V는 '평균 66.58ms의 높은 키 누름 지연'을 보였습니다. Browser Use, Skyvern, Manus는 실제로 키를 입력했으며 평균 키 간 지연은 각각 5.31 ms, 9.52 ms, 1.39 ms였습니다. 반면 사람은 '훨씬 긴 키 간 지연과 상당히 큰 분산'을 보였습니다. 스크롤은 연속적인 휠 움직임이 아니라 '불연속적인 점프'로 나타났습니다.
Cloudflare의 Precursor(2026년 7월 13일 Enterprise Bot Management용으로 발표, 연내 정식 출시 전까지 무료로 배포 중)는 같은 아이디어를 운영 환경용으로 구현한 것입니다. 클라이언트 측 JavaScript를 삽입해 '포인터 움직임, 키보드 활동, 포커스 변화, 가시성'을 수집하고 세션 단위로 누적합니다. 그래서 봇이 페이지를 새로고침하거나 새 챌린지를 시작해도 행동 기록을 초기화할 수 없습니다. 전제는 이렇습니다. '여전히 흉내 내기 어려운 것은 시간에 걸쳐 일관된 인간의 행동이다.'
자동화·확장 프로그램의 흔적
일부 에이전트는 페이지 자체에 흔적을 남깁니다. CHEQ가 2026년 2월 Claude Chrome 확장 프로그램을 분석한 결과에 따르면, 이 확장은 chrome.debugger API로 페이지를 조작하므로 합성된 클릭도 신뢰할 수 있는 이벤트로 취급됩니다. 다만 동작 중에는 claude-agent-stop-container, claude-agent-animation-styles 같은 id를 가진 DOM 요소를 삽입하며, 이 style 요소는 에이전트가 멈춘 뒤에도 남아 있는 경우가 많습니다. HUMAN Security의 Atlas와 Comet 연구 역시 Comet 내부 확장 프로그램이 남기는 DOM 흔적을 보고하며, Comet이 '요청별로 검증 가능한 신원 신호를 제공하지 않는다'고 지적합니다.
단일 흔적에 전략을 걸어서는 안 됩니다. Castle은 널리 쓰이던 CDP 탐지 기법(자동화 클라이언트가 Runtime 도메인을 활성화하면 호출되는 Error.stack getter)이 2025년 5월 V8 변경 이후 소리 없이 작동을 멈춘 과정을 기록했습니다. 벤더는 릴리스 한 번으로 DOM id를 바꿀 수 있습니다. 흔적은 행동 모델이 가중치를 두는 보조 증거로만 다루고, 그것만으로 판정을 내리지 마십시오.
환경 일관성과 이그레스
클라우드 호스팅 에이전트는 실행 위치를 더 많이 드러냅니다. 논문에서는 ChatGPT agent가 'Linux x86_64와 MacIntel' 플랫폼을 번갈아 보고했습니다. Simon Willison이 공개한 캡처 요청에서도 같은 현상이 보입니다. macOS Chrome user agent가 Sec-Ch-Ua-Platform: "Linux"와 함께 전송된 것입니다. Manus는 'Linux x86_64'에 '4GB RAM과 CPU 6코어'로 고정되어 있었습니다. UA와 클라이언트 힌트의 불일치, 그리고 클라우드 ASN은 각각만으로는 증거가 되지 않지만, 함께 나타나면 강력한 사전 근거가 됩니다. 이런 일관성 검사가 어떻게 만들어지는지는 브라우저 핑거프린팅 해설에서 다룹니다.
Web Bot Auth: 추측 대신 서명으로 식별하는 에이전트
Web Bot Auth는 에이전트가 자신의 운영 주체를 증명하게 해 줍니다. 각 요청에 HTTP Message Signatures(RFC 9421)로 서명하고 공개 키를 well-known URL에 게시하므로, 사이트는 UA·IP·행동으로 추론하는 대신 운영 주체를 암호학적으로 검증할 수 있습니다. IETF 작업은 아직 초안 단계입니다. webbotauth 워킹 그룹이 프로토콜 문서를 draft-ietf-webbotauth-httpsig-protocol로 채택했습니다(리비전 -00, 2026년 9월 1일, Cloudflare와 Google 소속 저자). 실제 운영 배포는 이미 표준보다 앞서 진행되고 있습니다.
실제 서명된 요청 해부
Simon Willison이 2025년 8월 캡처한 ChatGPT agent 요청의 서명 헤더입니다(nonce는 여기서 생략했습니다).
Signature-Agent: "https://chatgpt.com"
Signature-Input: sig1=("@authority" "@method" "@path" "signature-agent");created=1754340838;keyid="otMqcjr17mGyruktGvJU8oojQTSMHlVm7uO-lrcqbdg";expires=1754344438;nonce="_8jbGwfL…";tag="web-bot-auth";alg="ed25519"
Signature: sig1=:…:
Signature-Agent는 이 요청을 보증하는 주체를 나타냅니다. 검증자는 키를 얻기 위해https://chatgpt.com/.well-known/http-message-signatures-directory를 가져옵니다.- 서명 대상 구성 요소(
@authority,@method,@path,signature-agent)는 서명을 이 호스트, 메서드, 경로에 묶어 둡니다. 한 사이트에서 가로챈 서명을 다른 사이트에 재사용할 수 없습니다. expires − created = 3600: 서명은 한 시간 동안 유효하며,nonce덕분에 검증자는 그 시간 안의 동일 요청 재전송을 거부할 수 있습니다.tag="web-bot-auth"와alg="ed25519"는 Cloudflare의 요구 사항과 일치합니다. Ed25519 키,web-bot-auth태그, 그리고 최소한@authority와signature-agent를 서명 대상에 포함해야 합니다.keyid는 키의 JWK thumbprint입니다.
같은 요청의 UA는 평범한 데스크톱 Chrome이었습니다. 서명을 검증하지 않으면 이 요청은 다른 브라우저 요청과 구별되지 않습니다.
현재 실제로 서명하는 곳
2026년 10월 3일, 주요 에이전트 벤더 도메인에 /.well-known/http-message-signatures-directory를 요청해 보았습니다. chatgpt.com은 "signature_agent":"https://chatgpt.com"가 포함된 Ed25519 키를 반환했는데, 2025년 캡처와 keyid가 달라 키가 교체된 것으로 보입니다. agent.bot.goog도 Ed25519 키를 반환했습니다. Google 문서에는 Google-Agent에 대해 'https://agent.bot.goog 신원으로 Web Bot Auth 프로토콜을 실험 중'이라고 되어 있습니다. browserbase.com도 키를 반환했습니다(Browserbase는 2025년 8월 Cloudflare의 첫 서명 에이전트 그룹에 ChatGPT agent, Block의 Goose, Anchor Browser와 함께 포함됐습니다). 반면 claude.ai, claude.com, anthropic.com, perplexity.ai, browser-use.com에서는 같은 경로가 404나 HTML 페이지를 반환했습니다. 해당 경로에 파일이 없다고 해서 그 벤더가 아무것도 서명하지 않는다는 증거는 아니지만, 이들 중 어느 곳도 그 경로에 디렉터리를 게시하거나 봇 안내 페이지에 서명을 문서화하지 않았습니다.
검증자 쪽에서는 Cloudflare가 엣지에서 서명을 검증합니다. 2026년 7월 1일부터는 서명 에이전트를 Verified bots에 통합했으며, 하나의 운영자가 봇을 돌리는지 다수의 최종 사용자가 조작하는지를 기록하는 Direct vs Intermediary 필드를 새로 추가했습니다. DataDome의 Agent Trust는 Web Bot Auth, 공식 IP 목록, 역방향 DNS를 의도 모델과 결합합니다. 두 곳 모두 서명을 신원의 증거로 볼 뿐, 선의의 증거로 보지 않습니다.
에이전트 유형 → 식별 방식 → 탐지 방식 → 일반적 정책
| 에이전트 유형 | 식별 방식 | 탐지 방식 | 일반적인 사이트 정책 (2026년 10월) |
|---|---|---|---|
| 학습용 크롤러 (GPTBot, ClaudeBot) | 선언된 UA 토큰 + 공개 IP | UA + IP 대조, 역방향 DNS | robots.txt로 허용 또는 차단. 2026년 9월 15일 이후 온보딩된 광고 기반 도메인에서 Cloudflare 기본 프리셋은 Disallow AI Training으로, 학습 금지 robots.txt 설정과 학습 전용 크롤러에 대한 엣지 차단을 함께 적용합니다. |
| 검색 크롤러 (OAI-SearchBot, Claude-SearchBot, PerplexityBot) | 선언된 UA + IP | UA + IP 대조 | 대개 허용. 유입 트래픽을 보내 주기 때문입니다. |
| 사용자 요청형 페처 (ChatGPT-User, Claude-User, Perplexity-User, Google-Agent) | 선언된 UA + IP. Google-Agent는 서명을 실험 중 | UA + IP 대조, 서명이 있으면 서명 검증 | 제각각. Cloudflare의 신규 도메인 기본값은 광고 페이지에서 Agent를 차단합니다. 인용 노출을 위해 허용하는 퍼블리셔도 많습니다. |
| 서명된 클라우드 에이전트 (ChatGPT agent, Browserbase 세션) | Chrome UA + Web Bot Auth 서명 | 서명 검증. 의도는 행동으로 판단 | 콘텐츠는 허용. 결제, 로그인, 계정 생성에는 속도 제한이나 추가 인증 적용. |
| 서명 없는 클라우드 에이전트 (예: Manus) | 클라우드 ASN에서 오는 Chrome처럼 보임 | 클라우드 이그레스 + 핑거프린트 불일치 + 행동 | 챌린지 또는 차단. FP-Agent 연구에서 Manus는 완전히 차단됐습니다. |
| 로컬 에이전틱 브라우저/확장 프로그램 (Comet, Claude in Chrome, browser-use) | 사용자 본인의 Chrome과 IP. 서명 없음 | 행동(순간이동하는 커서, 붙여넣기 입력, 점프 스크롤), DOM/확장 프로그램 흔적 | 가장 어려운 경우. 민감한 흐름에는 행동 기반 점수화, 거래에는 추가 인증. |
사이트 운영자에게 주는 의미
'AI'에 대해 한 번에 결정하지 말고, 범주별·엔드포인트별로 결정하십시오. 공개 기사에서는 괜찮은 것이 로그인 폼에서는 괜찮지 않을 수 있습니다.
- 먼저 검증하고 판단하십시오. 선언된 봇은 UA를 IP 목록과 대조하고, 서명 에이전트는 서명을 확인합니다. GPTBot을 자칭하지만 검증되지 않는 트래픽은 UA를 위조한 트래픽일 뿐입니다.
- 허용, 차단, 과금 중에서 고르십시오. Cloudflare의 제어 기능은 모든 요금제에서 범주별로 작동합니다. Pay per crawl은 비용을 내지 않는 크롤러에 HTTP 402로 응답하지만, 이 글을 쓰는 시점에는 아직 비공개 베타였습니다.
- 페이지가 아니라 행동을 보호하십시오. 로컬 에이전틱 브라우저의 진짜 위험은 인증된 세션 안에서 하는 일입니다. 결제, 계정 변경, 폼 제출에 행동 점수화와 추가 인증을 적용하십시오. 챌린지 점수화가 어디에 들어맞는지는 Turnstile 내부 구조 글에서 설명합니다.
- 오탐은 양방향으로 생긴다고 예상하십시오. 접근성 도구도 텍스트를 붙여넣고 마우스 없이 포커스를 옮깁니다. '마우스 움직임 없음' 하나만으로 세션을 차단해서는 안 됩니다.
에이전트를 만드는 엔지니어에게 주는 의미
정직하게 자신을 밝히고, 가능하면 서명하고, 프록시는 사람처럼 보이기 위해서가 아니라 지역 확보와 부하 분산을 위해 쓰십시오. 탐지는 '서명된 것은 검증하고, 나머지는 행동으로 점수화한다'는 방향으로 가고 있습니다. 에이전트를 위장하는 비용은 계속 오르고, 정직하게 운영하는 비용은 계속 내려갑니다.
- 자신을 밝히십시오. 서버 측 페처에는 연락처 URL이 포함된 설명적인 UA 토큰을 쓰십시오. 에이전트 서비스를 운영한다면 키 디렉터리를 게시하고 요청에 서명하십시오. Ed25519 설정은 Cloudflare 문서와 오픈소스
web-bot-auth라이브러리에 나와 있습니다. - 사용자가 직접 촉발하지 않은 요청은 robots.txt와 사이트별 에이전트 규칙을 지키고, 요청 속도를 적정하게 유지하십시오. 둘 다 Cloudflare 검증의 조건입니다.
- 프록시는 올바른 이유로 쓰십시오. 레지덴셜 출구 IP는 국가 단위로 정확한 결과를 주고, 에이전트 무리가 하나의 클라우드 IP로 몰리지 않게 해 줍니다. 그렇다고 행동 모델에서 에이전트를 보이지 않게 만들어 주지는 않으며, 에이전트를 차단한 사이트를 우회하려고 프록시를 쓰는 것은 바로 Cloudflare가 Perplexity를 검증 목록에서 제외하며 지목한 행동입니다. 설정 방법은 AI 에이전트용 프록시 설정 실전 가이드에서 다룹니다. AI 에이전트용 최고의 프록시에서는 이런 워크로드에 맞는 IP 유형을 비교합니다.
- 챌린지에서는 멈추십시오. 에이전트가 봇 관리 벤더의 CAPTCHA나 403을 만났다면 사이트가 이미 결정을 내린 것입니다. 재시도하지 말고 사람에게 넘기십시오.
Web Bot Auth가 해결하지 못하는 것
서명은 에이전트를 누가 운영하는지를 증명할 뿐, 사용자가 무엇을 시켰는지는 증명하지 않습니다. Castle의 Operator 서명 검증 가이드가 말하듯, 검증은 출처를 확인해 주지만 '사용자의 의도를 증명하지는 않습니다.' 서명된 에이전트도 크리덴셜 스터핑, 사재기, 프롬프트 인젝션에 의한 구매에 동원될 수 있습니다. 그래서 Cloudflare의 Intermediary 라벨과 DataDome의 신뢰 점수는 여전히 신원 위에 행동 분석을 겹쳐 둡니다. 또한 서명은 가장 어려운 경우인 로컬 에이전틱 브라우저에는 아무 도움이 되지 않습니다. 이들은 현재 검증할 것을 전혀 보내지 않기 때문입니다. 이런 제품이 서명을 시작하기 전까지, 또는 사이트가 커서 궤적과 타이밍에만 의존하는 한, 이들의 탐지는 증명이 아니라 확률의 문제로 남습니다.






