AI 크롤러는 자바스크립트를 실행하지 않는다 — 서버 로그 실측

관측일 2026-09-14 · 대상 geocanon.com · 지니어스코리아

요약. 하루 동안 우리 서버에 들어온 AI 크롤러 요청을 전부 로그로 찍어 봤다. 세 가지가 나왔다. ① AI 실시간 페처(ChatGPT-User, Claude-User)는 HTML만 가져간다. 같은 시간에 들어온 Googlebot은 CSS와 JS까지 받아 렌더했다. ② 엔진은 실패 사유를 잘못 보고한다. ChatGPT-User는 200을 받아갔는데 ChatGPT는 "503이라 못 읽었다"고 답했다. ③ Perplexity는 "직접 열어보라"고 해도 요청 자체를 보내지 않는다. 로그에 단 한 건도 없는데 "접속 실패했다"고 답한다.

1. 어떻게 관측했나

서버(Node.js/Express)에 요청 로거를 붙여, 알려진 AI 봇 User-Agent 18종을 태깅해 모든 요청의 경로·응답 코드·응답 시간·IP를 기록하도록 했다. 로그 형식은 이렇다.

[BOT:<봇이름>] <ISO 시각> <메서드> <경로> <상태코드> <ms> ip=<IP> ua="<User-Agent>"

그 상태에서 각 엔진(로그아웃 웹 화면)에 "이 URL을 지금 직접 열어서 어떤 사이트인지 요약해줘"를 던져 실시간 페처를 유발하고, 엔진의 답변과 서버 로그를 맞춰 봤다. 대상 도메인은 이 사이트(geocanon.com)로, 2026년 9월에 새로 만든 신생 도메인이다.

2. 관측된 원본 로그

07:13:55  [BOT:ClaudeBot]     GET /robots.txt          200   5ms   ip=216.73.217.84
07:13:55  [BOT:ClaudeBot]     GET /sitemap.xml         200   1ms   ip=216.73.217.84
07:39:06  [BOT:Claude-User]   GET /bot.html            200   1ms   ip=34.162.191.81
07:40:51  [BOT:ChatGPT-User]  GET /                    200   1ms   ip=9.129.46.0
07:47:16  [BOT:Claude-User]   GET /                    200   4ms   ip=34.162.191.81
08:38:58  [BOT:Claude-User]   GET /about               200   3ms   ip=34.162.191.81
08:38:58  [BOT:Claude-User]   GET /sitemap.xml         200   2ms   ip=34.162.191.81
08:39:01  [BOT:Googlebot]     GET /robots.txt          200   1ms   ip=66.249.66.194
08:39:02  [BOT:Googlebot]     GET /                    200   1ms   ip=66.249.66.192
08:39:20  [BOT:Googlebot]     GET /assets/index-*.css  200   5ms   ip=66.249.66.192
08:39:25  [BOT:ChatGPT-User]  GET /                    200   1ms   ip=9.129.46.5
08:39:29  [BOT:Googlebot]     GET /assets/index-*.js   200   4ms   ip=66.249.66.192
08:39:46  [BOT:Googlebot]     GET /assets/index-*.js   200  48ms   ip=66.249.66.192

시각은 UTC. 이 창(1시간) 안에 PerplexityBot 및 Perplexity-User 요청은 0건이다.

3. 관측 1 — AI 페처는 HTML만 가져간다

같은 시간대에 두 종류의 봇이 들어왔고, 가져간 것이 명확히 다르다.

HTMLCSSJS해석
Googlebot자바스크립트를 실행해 렌더링한다
ChatGPT-User받은 HTML 그대로만 읽는다
Claude-User받은 HTML 그대로만 읽는다
ClaudeBot✅ (robots/sitemap)수집용 크롤러

여기가 SEO와 GEO가 갈리는 지점이다. 본문을 자바스크립트로 그리는 사이트는 구글에서는 정상으로 보이지만, AI 페처에게는 빈 페이지다. 구글 순위가 잘 나온다는 사실이 AI 답변에 인용된다는 보장이 되지 않는 이유가 여기 있다.

4. 관측 2 — 엔진은 실패 사유를 잘못 보고한다

이 사이트는 처음에 본문을 전부 자바스크립트로 그리는 구조였다. HTML은 이랬다.

<body>
  <div id="root"></div>
  <script type="module" src="/src/main.tsx"></script>
</body>

제목과 메타 설명은 있지만 본문은 한 글자도 없다. 이 상태에서 ChatGPT에 물었더니 이렇게 답했다.

"현재 geocanon.com은 제 쪽에서 503 Service Unavailable을 반환해서 페이지 본문을 직접 불러오지는 못했습니다."

그런데 같은 순간의 서버 로그는 [BOT:ChatGPT-User] GET / 200 1ms다. 503은 없었다. 지연도 없었다(1밀리초). 엔진이 받은 것은 200이었고, 실제로 일어난 일은 "200 + 빈 본문"인데, 보고된 사유는 "503"이었다.

그리고 본문을 읽지 못한 ChatGPT는 그 자리를 철자가 같은 다른 것으로 메웠다 — PyPI에 있는 동명의 파이썬 패키지 설명을 가져다 이 사이트를 설명했다. 즉 본문 부재는 "언급되지 않음"이 아니라 "다른 것으로 오인됨"으로 나타난다.

5. 관측 3 — Perplexity는 요청을 보내지 않는다

Perplexity(로그아웃)에 두 번 같은 요청을 했고, 두 번 다 이렇게 답했다.

"페이지에 직접 접속하여 내용을 가져오는 데 실패했습니다. 이 도메인은 현재 접속이 안 되거나, 서버가 응답하지 않거나, 아예 존재하지 않는 사이트일 가능성이 있습니다."

그러나 서버 로그 1시간 전체에 Perplexity 계열 요청이 0건이다. 접속을 시도한 적이 없다. 같은 시각 외부에서 그 주소는 정상으로 열렸고, ChatGPT와 Claude의 페처는 같은 주소에서 200을 받아갔다. 게다가 이 답변에는 질의와 무관한 국토지리정보원(ngii.go)이 출처로 달려 있었다.

해석하면, Perplexity의 로그아웃 웹 화면은 "직접 열어보라"는 지시를 받아도 임의 URL을 가져오지 않고 자기 색인만 조회한다. 신생 도메인이라 색인에 없으면 "접속 실패"라는 사유를 만들어 붙인다.

6. 처치와 그 결과

HTML 본문에 실제 텍스트를 넣는 것 하나만 바꾸고, 같은 질의를 다시 던졌다. 다른 조건은 모두 같다.

처치 전 (07:40:51 UTC)처치 후 (08:39:25 UTC)
서버 로그ChatGPT-User GET / 200 1msChatGPT-User GET / 200 1ms
엔진 자기보고"503이라 본문을 불러오지 못했다""방금 직접 열어 확인했습니다"
답변 내용동명의 PyPI 파이썬 패키지 설명이 사이트의 실제 내용 (정확)
인용 출처PyPI 페이지geocanon.com

봇 요청은 전후가 완전히 동일하다 — 같은 경로, 같은 200, 같은 1밀리초. 바뀐 것은 그 200 안에 텍스트가 있느냐뿐이고, 답변은 통째로 뒤집혔다.

7. 여기서 끌어낼 수 있는 것

  1. 엔진의 자기보고를 진단 근거로 쓸 수 없다. "못 읽었다", "503이었다", "접속 실패"는 실제로 일어난 일과 다를 수 있다. 두 엔진에서 각각 다른 방식으로 어긋났다. 유일하게 믿을 수 있는 것은 대상 서버의 요청 로그다. 엔진 답변만 보고 "크롤이 막혔다"고 판정하는 진단은 성립하지 않는다.
  2. 본문이 JS로 그려지면 AI에게는 없는 것이다. Googlebot이 읽는다는 사실은 근거가 되지 않는다. 둘은 다르게 동작한다.
  3. 본문 부재의 비용은 "누락"이 아니라 "오인"이다. 특히 이름이 겹치는 다른 대상이 인터넷에 있으면 그쪽 설명으로 채워진다.
  4. 크롤이 되는 것과 선택되는 것은 다른 문제다. 위 처치로 브랜드명 질의는 정확해졌지만, 같은 날 "국내에서 쓸 수 있는 GEO 진단 도구 추천해줘"라는 카테고리 질의에서는 여전히 한 번도 언급되지 않았다. 그 질의에서 엔진이 인용한 것은 도구 제작사 홈페이지가 아니라 도구들을 비교한 문서였다.

8. 한계