Indie Hackers

I only registered a domain. Why did ChatGPT's bots show up within an hour?

도메인만 등록했는데 한 시간 만에 ChatGPT 봇이 찾아온 이유는?

링크를 공개하지 않은 테스트 호스트 10곳의 nginx 로그를 확인했더니 OpenAI 봇은 8곳에 방문했고 Googlebot과 bingbot은 한 번도 오지 않았습니다. 글쓴이는 인증서 투명성 로그(Certificate Transparency)가 호스트 발견 경로일 수 있다고 봅니다. 다만 첫 요청을 보낸 스캐너의 영향 등 다른 가능성도 남아 있습니다.

에디터 노트

로그는 OpenAI 봇이 링크 없는 호스트를 빠르게 찾아왔다는 점을 보여주지만, CT 로그가 직접 원인이었다고 확정하지는 못합니다. 특히 세 호스트 모두 첫 요청 직후 스캐너가 먼저 왔고, 인증서만 있고 트래픽이 없는 조건은 시험하지 않았습니다. 와일드카드 인증서와 방문 0건인 호스트가 가설을 뒷받침하지만 DNS 노출 등 다른 경로를 배제하지는 않습니다. 가장 실용적인 결과는 발견 경로의 규명보다 스테이징 호스트를 공개 URL로만 보호할 수 없다는 점입니다. 댓글에서 글쓴이는 robots.txt보다 Basic Auth나 IP 허용 목록이 낫다는 의견에 동의했습니다. 또 실제 ChatGPT-User 요청은 테스트 호스트에서 0건이었으므로, 크롤링과 답변 인용은 별개로 봐야 합니다.

AI 요약

글쓴이는 새 도메인에 사이트를 올렸을 때 Google보다 ChatGPT 봇이 먼저 방문한 경험을 바탕으로, 링크도 사이트맵도 없는 테스트 호스트를 살폈습니다. SSL 인증서를 발급하면 호스트명이 공개된 Certificate Transparency(CT) 로그에 기록됩니다. 이 로그가 새 호스트를 찾는 경로일 수 있다는 가설을 세우고 nginx 접속 로그를 확인했습니다.

서버 하나에 있는 테스트 호스트 10곳은 어디에도 링크되지 않았고 검색엔진에도 제출하지 않았습니다. 글쓴이는 User-Agent만 믿지 않고 각 회사가 공개한 IP 대역과 대조했습니다. OpenAI의 OAI-SearchBot, GPTBot, ChatGPT-User 가운데 실제 IP와 일치한 요청만 집계했습니다. OpenAI나 Google 봇 이름을 흉내 낸 요청 3,305건은 제외했습니다.

로그에서 확인한 차이

실제 OpenAI 봇은 테스트 호스트 10곳 중 8곳을 방문했고 총 요청 수는 2,403건이었습니다. Googlebot과 Microsoft bingbot은 모두 0건이었습니다. Googlebot은 같은 서버의 운영 사이트에는 매일 방문했지만 테스트 호스트에는 5개월 넘게 오지 않았습니다. 생성 시점부터 로그가 남은 세 호스트의 기록에서는 첫 요청 직후 여러 스캐너가 방문했고, 그중 CT-WP-Scanner라는 이름을 쓴 봇도 있었습니다. 이어 OAI-SearchBot이 robots.txt를 읽고 GPTBot이 페이지를 가져왔습니다. 호스트 E와 H에서는 첫 요청 38분 뒤, C에서는 2시간 12분 뒤에 OAI-SearchBot이 나타났습니다. E와 C에서는 GPTBot이 robots.txt 요청 1초 뒤 페이지를 읽기 시작했습니다.

가설과 남은 조건

글쓴이는 새 도메인이나 호스트의 인증서 발급이 OpenAI 봇의 발견 신호일 수 있다고 해석합니다. 다만 OpenAI가 새 사이트를 찾는 방법은 공개하지 않았습니다. 글쓴이도 호스트명이 다른 곳에 노출됐을 가능성을 배제하지 않았고, 로그가 생성 시점부터 남지 않은 환경도 있다고 밝혔습니다. 또 인증서가 발급된 뒤 첫 요청이 오기 전까지 트래픽이 없었던 구간은 따로 시험하지 못했습니다. 따라서 CT 로그를 직접 읽는다고 입증한 실험은 아닙니다.

댓글에 답하며 글쓴이는 테스트 호스트 I가 도메인 전체 와일드카드 인증서를 사용해 호스트명이 CT 로그에 나오지 않았고, J에는 DNS 레코드가 없어 인증서도 없었다고 확인했습니다. 둘 다 OpenAI 봇 방문이 0건이어서 가설에 들어맞지만, 다른 발견 경로를 통제한 비교 실험은 아닙니다. 테스트 호스트에서 실제 ChatGPT-User 요청도 0건이었습니다. 봇이 호스트를 크롤링한 사실은 ChatGPT 답변에 사이트를 인용했다는 뜻이 아닙니다.

Indie Hackers 반응

  • @intellifin — 3,305건의 가짜 요청이 있었던 만큼 공개 IP 대역으로 검증한 점이 유용합니다. CT-WP-Scanner가 몇 초 만에 왔다면 OpenAI가 CT 로그를 직접 보는 대신 제3자가 호스트명을 전달했을 가능성도 시험해 볼 만합니다. 와일드카드 인증서를 쓰고 봇 방문 여부를 확인했나요?
  • @ska1296 — 방문이 0건인 두 호스트도 여덟 건의 방문만큼 정보를 줍니다. 와일드카드 인증서 아래에 있었다면 개별 호스트명이 CT 로그에 나오지 않았을 텐데, 각 환경이 어떤 인증서를 썼는지 확인할 만합니다.
    • @Hisashi Space — 확인해 보니 I는 도메인 전체 와일드카드 인증서를 쓰고 있어 개별 호스트명이 CT 로그에 나오지 않습니다. J는 DNS 레코드도 없고 인증서도 없습니다. 처음부터 로그가 남은 다른 세 호스트는 각각 고유한 호스트명이 CT 로그에 있었습니다. 따라서 방문이 없었던 두 환경도 가설과 맞습니다.
  • @Axinte Julia — 첫 요청이 다른 스캐너에서 왔다는 점도 혼란 요인일 수 있습니다. 트래픽이 전혀 없는 상태에서 인증서만 발급한 새 도메인에도 봇이 오는지 시험했나요?
    • @Hisashi Space — 별도 시험은 하지 않았습니다. 처음부터 로그가 있는 세 호스트 모두 첫 요청 몇 초 안에 스캐너가 왔고, 그중 하나는 CT-WP-Scanner라는 이름을 썼습니다. 인증서는 발급됐지만 트래픽은 전혀 없는 구간이 없었으므로 스캐너 방문이 영향을 줬을 가능성을 배제할 수 없습니다.
  • @Eric from Pineprompt — GPTBot, OAI-SearchBot, ChatGPT-User는 역할이 다르므로 구분하는 편이 좋습니다. 초기에 OAI-SearchBot이 주로 왔다면 새 호스트를 찾는 색인 과정과 맞아 보입니다. 호스트를 아는 사람이 없는데 ChatGPT-User가 온다면 더 놀라운 결과일 겁니다.
    • @Hisashi Space — 호스트 생성일에는 OAI-SearchBot이 먼저 robots.txt를 읽었고, 1초 뒤 GPTBot이 첫 페이지를 읽었습니다. 로그를 다시 확인하니 테스트 호스트의 실제 ChatGPT-User 방문은 0건이었습니다. ChatGPT-User라는 이름을 쓴 요청은 1,559건이었지만 OpenAI 공개 IP 대역과 일치하지 않았습니다. 운영 사이트에서는 도메인 등록 6일 뒤 ChatGPT-User가 처음 나타났고, 그 요청 뒤 1분쯤 지나 가입이 두 번 발생했습니다.
  • @Nishan Shrestha — OpenAI보다 첫 몇 초 안에 나타난 CT-WP-Scanner를 더 걱정해야 할 수 있습니다. 이런 봇은 CT 로그를 보고 새 호스트를 확인하며 인증되지 않은 WordPress 설치 화면을 찾을 수 있습니다. 공개 인증서는 앱 설치와 관리자 비밀번호 설정을 마친 뒤 발급하거나, 그전까지 Basic Auth로 막는 방법을 제안합니다.
  • @theboris7 — 같은 날 같은 서버에 새 호스트 두 개를 만들고, 하나는 전용 인증서를 쓰고 다른 하나는 기존 와일드카드 인증서에 포함해 비교하면 CT 가설을 직접 시험할 수 있습니다. 둘 다 방문을 받으면 CT 로그가 촉발 요인이 아닐 가능성이 커집니다. 스테이징을 숨기려면 봇이 따라야 하는 robots.txt보다 Basic Auth나 IP 허용 목록이 확실합니다.
    • @Hisashi Space — 와일드카드 비교는 좋은 시험이지만 아직 해보지 않았습니다. 전용 인증서가 있는 호스트에만 OpenAI 봇이 오면 가설을 거의 확정할 수 있겠습니다. robots.txt는 봇이 먼저 요청해야만 작동한다는 점도 맞습니다.

원문: Indie Hackers / 번역·요약: Trawling