ChatGPT AI 봇 웹 크롤러 차단 방법
개요
ChatGPT가 나오면서 대화형 AI 챗봇 열풍이 불게 되었다.
그런데 이러한 챗봇들이 학습을 한다는 이유로 허락도 없이 블로그 글들을 크롤링해 가서 자기들 학습(돈벌이)에 이용하고 있다.
이러한 AI 챗봇의 저작권 이슈 때문에 AI 챗봇 웹 크롤러(스파이더)를 차단하는 유명 외국 언론 사이트들도 늘어나고 있다. 실제 The New York Times, CNN, 디즈니 등등은 AI 챗봇 크롤러를 차단하고 있다. 국내 언론인 SBS, 중앙일보, 한국경제, 한국일보 등도 AI 챗봇 크롤러를 차단하고 있다.
우리도 이런 괘씸한 AI 챗봇의 무임승차를 막기 위해서 AI 챗봇의 크롤링을 차단해 보자. 그 방법을 가르쳐 주도록 하겠다.
AI 봇 크롤러 종류
OpenAI ChatGPT
- GPTBot: OpenAI의 학습용 크롤링 봇이다.
- ChatGPT-User: ChatGPT 플러그인에 사용되며 ChatGPT 사용자가 요청하는 실시간 쿼리에 응답하는 데 사용된다. 이 봇이 크롤링 한 콘텐츠가 AI 학습에 사용되지는 않는다.
- OAI-SearchBot: ChatGPT를 이용한 검색엔진인 SearchGPT의 크롤링 봇이다.
현재 ChatGPT 시스템은 두 봇 에이전트를 동일하게 취급하기 때문에 한 에이전트에 대해 robots.txt에서 크롤링을 허용하지 않으면 두 에이전트 모두에 적용되어 크롤링이 차단된다. 이 정책은 나중에 변경될 수 있기 때문에 둘 다 차단하는 것이 좋다.
Common Crawl
- CCBot: 비영리재단 Common Crawl의 크롤링 봇이다.
CCBot은 인터넷 전체를 크롤링하며 이렇게 크롤링한 데이터는 ChatGPT 3을 훈련하는 데 사용되었다.
Common Crawl은 웹 크롤링 데이터를 수집해 누구나 접근하고 사용할 수 있는 무료 개방형 저장소(repository)를 운영한다. 이는 Common Crawl이 크롤링한 데이터가 다른 대화형 AI 챗봇의 학습에 사용될 수 있다는 것을 의미한다.
Anthropic
- anthropic-ai, Claude-Web
anthropic-ai와 Claude-Web는 Anthropic사의 대화형 AI 모델 Claude의 학습용 크롤링 봇이다.
User-agent: Google-Extended
바드의 트레이닝 봇. 이 봇은 Google의 SGE(검색 생성 경험)에서 AI 기반 답변에 영향을 미치지 않습니다.
Amazon
- Amazonbot
미국의 전자상거래와 클라우드 대기업 아마존(Amazon)의 웹 수집 크롤링 봇이다.
아마존은 AI를 이용한 사업을 하고 있으며 광범위하게 웹 데이터를 수집하고 있기 때문에 Amazonbot을 차단하는 것이 좋다.
Meta
- FacebookBot
FacebookBot은 페이스북과 인스타그램으로 유명한 미국의 IT회사 Meta의 크롤링 봇이다.
메타 또한 AI 광풍에 편승해 AI를 이용한 사업을 하고 있으며 이 AI를 학습시키기 위해 광범위하게 웹 데이터를 수집하고 있다. 그렇기 때문에 FacebookBot 역시 차단하는 것이 좋다.
Cohere
- cohere-ai
cohere-ai는 캐나다의 다국적 회사 Cohere의 크롤링 봇이다.
Cohere는 AI(Artificial Intelligence)를 이용한 LLM(대규모 언어 모델)을 전문으로 하는 기업이다.
Webz.io
- Omgilibot, Omgili
Omgili과 Omgilibot은 이스라엘의 웹 빅데이터 기업 Webz.io의 크롤링 봇이다.
Wayback Machine
- archive.org_bot
- Arquivo-web-crawler
- heritrix
- ia_archiver
- ia_archiver-web.archive.org
위 크롤링 봇들은 웹 아카이브 사이트 '웨이백 머신(Wayback Machine)'의 크롤링 봇이다.
자신의 사이트가 웨이백 머신에 자동으로 아카이빙 되는것이 싫다면 나열된 봇들을 차단하는 것이 좋다.
Microsoft
- Bingbot, AdIdxBot, BingPreview, MSNBot
Bingbot과 AdIdxBot, BingPreview는 지금 현재 마이크로소프트에서 사용하고 있는 크롤러 봇이다. MSNBot은 마이크로소프트의 검색엔진 Bing이 나오기 전에 MSN서치를 위해 사용하던 크롤러 봇이었으나 Bing이 나오고 난 뒤 도태되어 2010년에 사용이 종료되었다.
AI 봇 크롤러 차단 방법
일반적으로 robots.txt에 차단할 AI 크롤러 봇을 입력해서 차단할 수 있으나 마이크로소프트의 Bing은 이 방법으로 차단할 수 없다.
robots.txt 방법과 Bing AI 크롤러 봇을 차단하는 방법을 설명한다.
robots.txt 수정
아래의 코드를 robots.txt에 추가하면 AI 크롤러 봇이 차단된다.
User-agent: GPTBot
User-agent: ChatGPT-User
User-agent: OAI-SearchBot
User-agent: CCBot
User-agent: Google-Extended
User-agent: Amazonbot
User-agent: FacebookBot
User-agent: PerplexityBot
User-agent: YouBot
User-agent: anthropic-ai
User-agent: Claude-Web
User-agent: ClaudeBot
User-agent: cohere-ai
User-agent: Omgilibot
User-agent: omgili
User-agent: Diffbot
User-agent: Bytespider
User-agent: Applebot-Extended
User-agent: Meta-ExternalFetcher
User-agent: Meta-ExternalAgent
User-agent: Timpibot
User-agent: AlphaAI
User-agent: ImagesiftBot
User-agent: PiplBot
User-agent: AlphaBot
User-agent: HubSpot
User-agent: ia_archiver
User-agent: archive.org_bot
User-agent: Arquivo-web-crawler
User-agent: heritrix
User-agent: ia_archiver-web.archive.org
User-agent: Nicecrawler
Disallow: /
robots.txt를 편집할 수 있다면 위의 robots 규칙을 robots.txt에 추가하기만 하면 된다.
위의 룰을 추가하면 Bing AI와 구글 SGE AI를 제외한 모든 AI 크롤러 봇과 아카이브 봇을 차단하게 된다.
Bing AI 크롤러 차단 방법
Bing AI 크롤러 봇을 차단하려면 HTML의 웹사이트의 헤더 부분(<head>와 <head/>사이)에 meta 태그 또는 X-Robots-Tag를 추가해야 한다.
구체적으로 <head>와 <head/>사이에 nocache 또는 noarchive 메타 태그를 추가하면 되는데 차이점은 다음과 같다.
- nocache 태그가 있는 콘텐츠는 Bing Chat의 답변에 포함될 수 있다. 답변에는 URL과 스니펫, 제목만 표시되며, Bing 검색엔진이 인덱스한 콘텐츠에 NOCACHE 태그가 붙은 경우 URL, 제목 및 스니펫만 Microsoft의 생성형 AI 기반 모델 학습에 사용될 수 있다. 즉 nocache를 사용하면 Microsoft의 AI 모델을 학습할 때 URL, 제목 및 스니펫만 사용하며 또한 Bing Chat 답변에 웹페이지 URL을 포함할 수 있다.
- noarchive 태그가 붙은 콘텐츠는 Bing Chat 답변에 포함되지 않으며, 답변에 URL 링크가 포함되지 않는다. Bing 검색엔진이 인덱스한 콘텐츠에 NOARCHIVE 태그가 붙은 경우 Microsoft의 생성형 AI 기초 모델을 학습하는데 URL, 제목 및 스니펫 등 어떠한 것도 사용하지 않는다.
- 페이지에 nocache와 noarchive가 모두 있는 경우 제한이 적은 nocache로 취급한다.
- noarchive 태그 또는 noarchive 태그가 없는 콘텐츠는 Bing Chat 답변에 포함될 수 있으며, 더 유용한 답변을 생성하고 Bing Chat에서 순위를 높일 수 있는 AI의 기능에 활용될 수 있으며, 사이트 콘텐츠는 생성 AI 기반 모델을 학습하는 데 사용될 수 있다.
설명한 방법은 마이크로소프트가 빙 AI 학습에 대해 공식으로 발표한 내용이다.
Bing Chat에 자신의 웹사이트 주소를 남겨서 유입을 증가시키기 위해서는 nocache 태그를 쓰고, 스니펫 조차도 빙 AI의 딥러닝에 활용되는것이 싫다면 noarchive 태그를 쓰면 된다.
Bing AI의 딥러닝을 차단하기 위해서는 다음의 코드를 추가하면 된다.
<meta name="Bingbot" content="nocache">
<meta name="Bingbot" content="noarchive">
이렇게 위의 nocache 또는 noarchive 코드를 HTML <head> 부분에 추가한다.
<meta name="robots" content="noarchive">
<meta name="robots" content="nocache">
전체 웹 크롤러 봇에 대해 캐시와 아카이브를 차단하려면 위와 같이 Bingbot을 robots으로 바꿔 추가하면 된다.
참고로 구글 봇은 nocache가 규칙 목록에 없고 noarchive가 그 캐시 금지의 역할을 한다. 구글 Robots meta 태그 공식 문서.
추가로 설명하자면 규칙 문자의 대문자와 소문자는 구별되지 않는다.
구글 SGE AI 차단
구글의 AI 기반 검색 경험인 '서치랩스(Search Labs)'와 '생성형 AI 검색(Search Generative Experience, SGE)'에서도 AI가 활용된다. 이러한 구글 SGE도 AI 학습을 위해서 웹사이트의 콘텐츠를 크롤링해 가기 때문에 차단이 필요하다.
구글은 SGE의 AI 학습을 차단하기 위해서는 다음의 방법을 쓰라고 공식적으로 알리고 있다.
<meta name="Googlebot" content="nosnippet">
<meta name="Googlebot" content="max-snippet:0">
이 두 코드중 하나를 추가하면 SGE의 AI 학습을 차단하게 된다.
위의 nosnippet는 문자 스니펫과 동영상 미리보기를 표시하지 않는다는 규칙이며 밑의 max-snippet:0은 스니펫에 표시할 수 있는 문자의 최대 개수가 0이라는 규칙이다. max-snippet:0은 스니펫 문자 수가 0가 되기 때문에 결과적으로 스니펫을 금지하는 효과가 되기 때문에 문자 한정으로 nosnippet과 같은 기능을 한다.
그러나 이 방법의 문제는 일반적인 구글 검색의 스니펫 기능도 작동하지 않게 되는 문제가 있다. 일반적으로 구글 검색의 스니펫 기능은 검색결과의 최상단에 위치하는 기능으로 많은 검색 유입을 불러오는 웹사이트 소유자에게 유리한 기능인데 이러한 스니펫 기능도 꺼진다는 것은 검색에서 불리한 페널티를 먹는다는 것과 같은 결과를 가져온다.
구글에서 밝히기를 SGE는 독립된 제품이 아니라 구글 검색의 일부라는 입장이다. 그렇기 때문에 구글 검색에서 SGE만 따로 제외하는 옵션을 제공하지 않는다고 한다. 한마디로 SGE를 검색 기능에 끼워팔기를 해서 SGE를 끄지 못하도록 하는 것이다. 참으로 양아치스럽기 그지 없다.
일단 어찌되었든지 스니펫을 끄면 구글 검색에 페널티가 있기 때문에 구글 검색으로 많은 유입을 바란다면 이 방법은 쓰지 않는 것이 좋다.
Google-Extended가 크롤링하는 자료는 AI 학습을 위해 장기 기억(LLM, long-term memory)에 저장하고, SGE는 단기 기억(short-term memory)인 LLMs context window에 저장하기 때문에 AI 학습에 대한 우려가 없다는 의견도 있다. 그러나 이 의견은 구글의 공식 답변이 아니며, 또한 AI 답변이 검색결과 선두에 위치하기 때문에 웹페이지로의 유입이 줄어드는 문제는 해결되지 않는다. 그리고 SGE의 AI 답변이 일반적인 스니펫에 비해 지나치게 길어서 문제다. 이는 밑의 스니펫 문자 수를 제한해서 해결할 수도 있다.
스니펫의 나타나는 문자 수를 줄여서 최상단에 노출시키되 AI가 학습하는 문자의 수를 줄이는 방법도 있다.
<meta name="Googlebot" content="max-snippet:30">
스니펫의 문자 수를 제한하려면 이렇게 max-snippet: 뒤에 스니펫에 표시될 최대 문자 수(영문 기준)을 입력하면 된다.
그렇다고 해도 스니펫 문자 수를 줄이면 구글 검색에서 보이지 않는 알고리즘 페널티가 있을 수도 있기 때문에 사용하기 꺼려지긴 한다.
<meta name="Googlebot" content="max-snippet:-1">
이렇게 max-snippet: 뒤에 -1을 넣으면 스니펫의 문자 수를 무제한적으로 허용하게 된다. 이렇게 되면 구글 검색엔진이 자동으로 최적화된 스니펫의 길이를 선택한다. 그런데 이 기능은 사실상 max-snippet 규칙이 없는 것과 마찬가지기 때문에 쓸모없는 기능이다.
참고로 웹사이트에 접근하는 모든 크롤러 봇에 대해 위에 설명한 기능을 작동하려면 Googlebot 대신 robots을 입력하면 된다.
결론
AI 크롤러 봇을 차단하면 독점 콘텐츠가 AI 모델에 의해 재생산되는 것을 방지할 수 있으며, 빅테크 또는 경쟁업체가 내 지적 재산을 활용하여 AI 시스템을 학습시커 돈벌이를 하는 것을 막을 수 있다.
그렇기 때문에 장기적으로는 블로그의 콘텐츠에 대한 AI 모델의 접근을 차단하는 것이 좋다.
AI 봇에 대해 일부 콘텐츠만 차단할 수 도 있는데 예를 들면 웹사이트에서 브랜드 인지도를 높이기 위해 일부 페이지는 AI 봇의 크롤링을 허용하고, 다른 페이지는 AI 봇을 차단하여 저작권이 있는 자신의 독창적인 저작물이 타인의 AI 학습 목적으로 사용되는 것을 방지할 수 있다.