일부 봇을 차단하는 방법

4 days ago 12

CDN 없이 HTTP 프로토콜/IP 대역/클라이언트 신호/TCP 특성/TLS 지문/콘텐츠 압축을 조합해, 구현이나 설정이 부실한 봇 대부분을 차단하는 방법을 정리함 모든 방법은 선택적으로 조정해야 하며, 1~3년치 접근 로그를 먼저 분석하지 않으면 VPN 사용자/검색엔진/CDN/학교/도서관/특정 언어 사용자를 함께 차단할 수 있음 HTTP/1.1 클라이언트와 데이터센터의 AS/CIDR 대역을 차단하면 많은 봇을 제거할 수 있지만, GoogleBot을 비롯한 검색엔진과 정상적인 데이터센터 이용자도 제외될 수 있음 Nginx 헤더 검사와 nftables의 TCP 윈도 크기/MSS/TTL 필터는 단순 크롤러와 스캐너를 줄이지만, LTE/VPN/Windows 같은 정상 환경에서 오탐이 발생할 수 있음 장기적으로는 JA4 TLS 지문 탐지와 Brotli 전용 응답을 대안으로 제시하지만 완전한 차단은 보장하지 않으며, 수익을 내는 서비스에는 사용하지 말 것을 경고함 차단 범위와 적용 전제 차단 목표를 일부 봇/대부분의 봇/모든 봇 가운데 먼저 결정해야 함 여기서 다루는 방식은 정교한 자동화 도구 전체가 아니라 구현이나 설정이 부실한 봇 대부분을 비교적 단순하게 차단하는 데 초점을 둠 각 방식별로 정상 사용자와 검색엔진을 차단할 위험을 함께 표시함 2026년 7월 26일 Hacker News에 공유된 뒤, 차단 기능 대부분을 블로그에서 별도의 데모 사이트로 옮겨 독자가 방법을 읽은 후 직접 접근을 시도하는 퍼즐 형태로 바꾸기로 함 모든 설정은 선택적으로 수정하거나 생략할 수 있으며, 실제 적용 전 충분한 조사와 테스트가 필요함 정상 사용자/조직 내부 시스템/의존 중인 외부 서비스가 차단될 수 있으므로 적용 책임은 전적으로 운영자에게 있음 수익을 내는 운영 환경에는 사용하지 말 것 방법 1: HTTP 프로토콜로 구분 정상 사용자 차단 위험은 낮고, 일부 검색엔진 차단 위험은 중간 수준 일반 브라우저는 HTTP/2.0을 사용하지만 많은 봇은 HTTP/1.1을 사용한다는 차이를 이용함 GoogleBot은 HTTP/1.1을 사용한다고 보며 이 방식으로 차단됨 Bing과 Facebook 크롤러는 HTTP/2.0을 사용함 HTTP/1.1로 링크 제목이나 짧은 미리보기를 가져오는 서비스도 차단될 수 있음 Opera Mini도 대상에서 제외함 Nginx에서 $server_protocol이 HTTP/2.0이 아니면 다른 페이지로 리디렉션하...

Read Entire Article