[AWS]AI 학습용 크롤러 봇 리스트 및 WAF를 활용한 차단 방법(GPTBot, Meta, ClaudeBot, PerplexityBot , Google-Extended등)

2025. 7. 22. 21:10·DevOps
반응형

배경 상황

지금 재직중인 회사가 데이터 비즈니스를 하는 곳이라 원래도 토이 프로젝트를 만들려고 하는 개발자나 경쟁사(로 추정되는 사람)로부터의 크롤링이 꽤나 많은 편인데, 최근 이상 트래픽이 감지되어 살펴보니 User Agent가 아래와 같았다.

meta-externalagent/1.1(+https://developers.facebook.com/docs/sharing/webmasters/crawler)

 

 

User-Agent에서 표시된 링크를 들어가보면 Meta-ExternalAgent 크롤러는 AI 모델 훈련, 콘텐츠를 직접 인덱싱하여 제품 개선 등의 사용 사례를 목적으로 웹을 크롤링합니다 라고 설명이 되어있다. Llama 5에는 우리 회사 데이터가 들어갈수도 있는 것;;; 그래서 Meta의 AI 봇을 차단하는 김에 다른 LLM provider에서 사용하는 봇 리스트도 같이 정리해보았다.

 

 

LLM 학습용 크롤러 봇 리스트

1. GPTBot

  • 참고: OpenAI 공식 문서 링크

이름 그대로 ChatGPT/GPT 모델의 학습 데이터 수집용 봇. GPTBot 외에도 OAI-SearchBot, ChatGPT-User라는 봇들도 있는데 해당 봇은 학습 데이터 수집용이 아니라 실제 유저와 인터랙션 할 때 사용되는 봇으로 이번 차단 구성에는 포함하지 않았다.

 

User-Agent 예시

Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; GPTBot/1.1; +https://openai.com/gptbot

 

 

2. Meta-ExternalAgent (Meta/Facebook)

  • 참고: Facebook(Meta) 공식 문서 링크

Meta(Facebook)에서 AI 모델 훈련 및 제품 개선을 목적의 크롤링 봇. 하지만 robots.txt에 block 설정 무시하고 크롤링을 해갔다는 후기도 있어서 주의가 필요하다.

 

User-Agent 예시

meta-externalagent/1.1 (+https://developers.facebook.com/docs/sharing/webmasters/crawler)

 

 

3. ClaudeBot (Anthropic)

  • 참고: Anthropic 공식 문서 링크

Claude 모델 훈련 데이터 수집용 봇으로 Reddit을 보면 이 봇도 robots.txt를 무시한다는 후기가 꽤 올라와 있다. Claude의 경우에도 Claude-User, Claude-SearchBot와 같이 모델 학습에는 사용하지 않지만 유저 인터랙션 단계에서 활용되는 봇들이 있다.

 

User-Agent 예시

ClaudeBot

 

 

4. PerplexityBot (Perplexity.ai)

  • 참고: Perplexity 공식 문서 링크

Perplexity AI 검색 결과에 활용되는 봇으로 AI 모델 학습에는 사용되지 않는 봇이라고 한다.

 

User-Agent 예시

Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; PerplexityBot/1.0; +https://perplexity.ai/perplexitybot)

 

 

5. Google-Extended (Google)

  • 참고: Google 공식 문서 링크

Gemini App, Vertex AI 용 Gemini훈련 및 Gemini Grounding(구글 서치 결과를 답변에 활용)에 활용되는 봇.

 

User-Agent 예시

Google-Extended

 

 

6. Bytespider (ByteDance/TikTok)

공식 문서를 못찾았는데 ByteDance AI 서비스 개선에 사용되는 봇이라고 알고있다.

 

User-Agent 예시

Bytespider

 

 

7. Amazonbot (Amazon)

  • 참고: Amazon 공식 문서 링크

Amazon의 AI 및 기타 서비스 개선에 사용되는 데이터를 수집하는 봇으로 LLM 학습에 사용되지 않도록 하려면 <meta name="robots" content="noarchive">라는 메타 태그를 추가해야한다고 한다.

 

User-Agent 예시

Amazonbot 

 

 

8. Applebot-Extended (Apple)

  • 참고: Apple 공식 문서 링크

Apple Intelligence 학습에 사용되는 데이터 수집용 봇.

 

User-Agent 예시

Applebot-Extended

 

 

9. CCBot (Common Crawl)

  • 참고: CCBot 공식문서 링크

오픈데이터셋 구축을 위해 사용되는 봇으로 AI 학습에 특정되지 않는 용도지만 회사 데이터가 외부에 공개될 수 있기 때문에 같이 차단한 봇.

 

User-Agent 예시

CCBot

 

 

WAF Rule로 AI Bot을 차단하는 방법

LLM 학습용 봇은 보통 해당 플랫폼 공식 문서에 유형, 그리고 원하지 않을 경우 크롤링이 되지 않도록 하는 robots.txt 설정 가이드가 나와있다. 하지만 위에서도 언급했듯 해당 설정을 무시하고 크롤링 하는 케이스가 있어 이번 경우에는 AWS WAF를 통해 크롤링 트래픽을 차단했다.

 

 

참고로 AWS WAF 룰에는 AWS(혹은 서드파티)에서 제공하는 managed rule과 직접 규칙을 설정해서 사용하는 custom rule이 있고, 이 중 AWS-AWSManagedRulesBotControlRuleSet라는 이름의 관리형 규칙에서 CategoryAI라는 규칙이 있다. 하지만 예전부터 Count 규칙으로 계속 추가해서 보고있었는데도 불구하고 awswaf:managed:aws:bot-control:bot:category:ai 혹은 awswaf:managed:aws:bot-control:CategoryAI 태그가 걸리는 트래픽이 없어서 이번에는 아래와 같이 custom rule로 설정했다.

 

1. AWS 콘솔에서 WAF > Create protection pack을 선택한다(이전 버전의 WAF 콘솔이라면 Create ACL). App Category는 적당히 선택한다.

 

 

2. Add resources에서 Add regional resources를 클릭하고, WAF를 연결할 리소스(ex. ALB)를 선택한다.

 

 

3. Build your own pack from all of the protections AWS WAF offers를 클릭한다(추천하는 룰셋 사용할 경우 해당하는 옵션 선택).

 

 

4. Add rules 에서 Custom rule을 선택하고 Next를 클릭한다.

 

 

5. 이번 화면에서도 Custom rule 옵션을 선택하고 Next를 클릭한다.

 

 

6. Add rules 화면에서 Action은 Block(처음 적용 전에는 Count로 선택해서 False positive가 없는지, Rule이 제대로 설정되었는지 테스트 후에 Block으로 바꿀 것을 권장)으로 설정하고 Rule name을 적절히 입력한다. 요청 조건(If a request…)탭에서는 matches at least on of the statements (OR)을 선택한다.

 

 

7. Inspect에서 Single header를 선택하고, Header field name에서는 user-agent를 입력한다. Match type은 Contains string(Exact match가 아닌 경우에도 차단될 수 있도록 하기 위함)으로 설정한다. 그리고 대/소문자 구별없이 차단될 수 있도록 String to match에서는 user-agent를 소문자(ex. gptbot)로 입력하고 Text transformation를 Lowercase를 선택한다.

 

 

8. 위 설정을 차단 대상인 bot 별로 반복해서 설정하면 된다.

저작자표시 비영리 동일조건 (새창열림)

'DevOps' 카테고리의 다른 글

[Harbor]레지스트리 로그인 실패 에러 해결 방법(Error: login attempt to harbor failed with status: 401 Unauthorized)  (0) 2025.08.24
[PagerDuty]Jenkins 파이프라인 실패 알림 설정하기  (2) 2025.07.30
[Teleport]Proxy Pod가 NLB에서 Health check Failed 되는 이슈 해결 방법  (1) 2025.07.20
[Istio]헬름 차트 배포 후 Istiod Pod에서 "webhook is not ready, retry controller=validation" 에러 해결 방법  (0) 2025.07.19
[cert-manager]error instantiating route53 challenge solver: unable to construct route53 provider: empty credentials; perhaps you meant to enable ambient credentials?" 에러 해결 방법  (1) 2025.07.12
'DevOps' 카테고리의 다른 글
  • [Harbor]레지스트리 로그인 실패 에러 해결 방법(Error: login attempt to harbor failed with status: 401 Unauthorized)
  • [PagerDuty]Jenkins 파이프라인 실패 알림 설정하기
  • [Teleport]Proxy Pod가 NLB에서 Health check Failed 되는 이슈 해결 방법
  • [Istio]헬름 차트 배포 후 Istiod Pod에서 "webhook is not ready, retry controller=validation" 에러 해결 방법
Canary_카나리아
Canary_카나리아
어쩌다 데브옵스 엔지니어가 된 문과생의 기록용 블로그
    반응형
  • Canary_카나리아
    release: canary
    Canary_카나리아
  • 전체
    오늘
    어제
    • 분류 전체보기 (120)
      • DevOps (67)
      • Programming (28)
      • Certifications (3)
      • ETC (20)
  • 블로그 메뉴

    • 홈
    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    백엔드개발
    네이버클라우드자격증
    terraform
    NCPassociate자격증
    Grafana
    네이버클라우드서비스
    자바개념
    NCP자격증
    java개념
    프로메테우스
    프로메테우스예제
    argocd
    그라파나예제
    백엔드공부
    ncp서비스
    개발자
    Java
    클라우드자격증
    백엔드
    클라우드엔지니어자격증
    kops란
    데브옵스엔지니어
    spring
    NCPprofessional자격증
    Prometheus
    제로베이스
    백엔드스쿨
    그라파나
    한빛출판네트워크
    kops사용법
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
Canary_카나리아
[AWS]AI 학습용 크롤러 봇 리스트 및 WAF를 활용한 차단 방법(GPTBot, Meta, ClaudeBot, PerplexityBot , Google-Extended등)
상단으로

티스토리툴바