AI에게 브라우저를 쥐여줬더니 자기 차단을 풀고 왔다

대시보드에서 안 풀리던 봇 차단 토글, Claude가 직접 브라우저를 조작해 마스터 룰 구조를 밝혀내고 재구성한 기록

하려던 것

의정활동 트래커의 검색 유입 개선 트랙을 며칠째 돌리는 중이다. 구글 색인 정리, 공유 카드, 네이버 웹마스터 소유확인까지 마쳤고, 남은 게 AI 크롤러 정책이었다. robots.txt를 보다가 우리가 쓴 적 없는 차단 블록을 발견했는데, Cloudflare가 주입하는 관리형 콘텐츠였다. 학습용 크롤러(GPTBot, ClaudeBot 등)는 차단하고 검색·인용 봇은 허용하는 구성이라 사실 거의 정답이었다. AI 챗봇이 법안 질문에 우리 페이지를 인용해 링크를 걸어주는 유입 경로는 이미 열려 있는 셈.

다만 robots.txt는 “신호”일 뿐이고, Cloudflare에는 네트워크 레벨에서 실제 요청을 막는 봇별 토글이 따로 있다. 이 레이어를 대시보드에서 눈으로 확인하고 싶었다.

어떻게 시켰나

Claude의 API 토큰에는 이 존 권한이 없어서, 대시보드 URL을 던져주고 브라우저로 직접 보라고 했다. 내 크롬에 로그인돼 있으니 확장으로 세션을 그대로 쓰는 방식이다.

첫 시도는 404. Claude는 “로그인이 안 된 상태”라고 진단했지만 실은 잘못된 주소로 들어간 것이었다.

“로그인 되어 있는데, 네가 잘못된 페이지로 접근한 거야.”

존 홈부터 다시 들어가 메뉴를 클릭해가며 AI Crawl Control에 도달했고, 스크린샷과 페이지 텍스트로 봇별 차단 표를 재구성했다. 검색엔진 허용, AI 검색·인용 봇 허용, 학습봇 차단 — 그런데 딱 하나, Claude-User만 차단이었다. 같은 용도의 ChatGPT-User·Perplexity-User는 허용인데, 사용자가 “이 링크 읽어줘” 할 때 쓰는 실시간 fetcher인 Claude-User만 막힌 비일관. robots.txt에는 허용으로 적혀 있는데 네트워크 레이어가 막고 있었다.

어디서 막혔나

토글 하나 끄면 끝일 줄 알았다. 그런데 내가 대시보드에서 Claude-User 토글을 아무리 눌러도 풀리지 않았다.

“Claude-User 토글이 안 풀리거든. 네가 해봐라.”

Claude가 브라우저를 넘겨받았다. 스크린샷을 찍고, 눌러보고, 접근성 트리를 읽고, 자바스크립트로 라디오 버튼 상태까지 조회한 끝에 구조를 알아냈다. 개별 토글이 문제가 아니라 상위의 “Block AI bots” 마스터 룰이 차단을 소유하고 있었다. 마스터가 켜져 있는 동안 개별 토글은 잠겨서, 사람이 눌러도 그냥 되돌아가는 거였다.

어떻게 풀었나

마스터 룰을 “Do not block”으로 내렸다. 이 순간 모든 봇이 일괄 허용으로 풀리는데, 여기서 멈추면 학습봇에 콘텐츠를 통째로 내주게 된다. Claude는 이어서 학습봇 14종을 개별 토글로 하나하나 다시 차단했다. 최종 상태는 이전과 동일한 보호에 Claude-User만 허용. robots.txt의 ai-train=no 신호도 그대로라 이중 방어가 유지된다.

검증도 실측으로 했다. User-Agent를 바꿔가며 curl을 날려 Claude-User는 200 허용, GPTBot은 403 차단, 일반 브라우저는 200 정상임을 확인했다. 토글 색이 바뀐 화면을 믿는 게 아니라 실제 트래픽으로 확인하니 마음이 놓였다.

공짜는 아니었다. 마스터 룰일 때는 Cloudflare가 새 학습봇을 자동 분류해 막아줬는데, 개별 토글 방식이 되면서 새로 등장하는 학습봇은 자동 차단되지 않는다. 몇 달에 한 번 목록을 훑어야 하는 관리 부담이 생겼다.

덤 — 네이버는 프로토콜까지 본다

같은 트랙에서 네이버 웹마스터 sitemap 제출이 계속 거부됐다. 원인은 사이트 속성을 http://로 등록한 것. http 주소는 https로 리다이렉트되는데, 네이버는 등록 속성과 프로토콜이 다른 곳으로 나가는 sitemap을 거부한다. Claude가 curl로 리다이렉트 체인을 찍어 확정했다. http 속성은 수정이 안 돼서 https 속성을 새로 등록하고 기존 것은 삭제했다. 소유확인 meta는 프로토콜과 무관하게 그대로 통과.

배운 점