본문으로 건너뛰기
네트워크 보안

IP 기반 봇 탐지: IP로 알 수 있는 것과 알 수 없는 것

Googlebot, 클라우드 서버, Tor 출구, Censys 스캐너, iCloud 릴레이까지 실제 IP 다섯 개로 테스트한 IP 기반 봇 탐지. 각 신호가 증명하는 것과 놓치는 것을 정리했습니다.

작성자GeoIPHub 팀게시일읽는 시간25분 분량
밝은 노드 하나를 남기고 입자로 흩어지는 와이어프레임 로봇 실루엣, IP 기반 봇 탐지를 나타냄

이 차이가 중요한 이유는 이제 봇이 요청의 과반을 차지하기 때문입니다. Imperva의 2026 Bad Bot Report에 따르면 2025년에 관측된 웹 트래픽의 53%가 자동화된 트래픽이었고, 그중 악성 봇만 40%를 차지했습니다. 그래서 로그인 폼에서 정말 필요한 질문은 대개 "이게 봇인가?"가 아닙니다. "어떤 종류의 봇이며, 통과시킬 것인가?"입니다.

봇의 종류를 구분해 두면 도움이 됩니다. 검증된 크롤러, 검증되지 않은 자칭 봇, 사칭 봇, AI 에이전트와 사용자 요청 기반 페처, 콘텐츠 및 가격 스크레이퍼, 크리덴셜 스터핑 봇, 스캐너가 있습니다. 아래에서는 봇 종류별로 IP 다섯 개를 조회한 결과를 보여 드린 다음, 작업별로 더 깊이 다루는 가이드를 안내합니다. IP, 역방향 DNS, 공개 대역으로 크롤러 검증하기, 회원가입과 결제 보호, 실제 사용자를 막지 않으면서 속도 제한하기입니다.

서로 다른 후광을 가진 노드 다섯 개가 하나의 돋보기에 연결된 모습, 봇 신호를 확인하는 IP 다섯 개를 나타냄
실제 IP 다섯 개, 서로 다른 다섯 가지 이야기: IP만으로 증명할 수 있는 것과 없는 것.

IP 주소로 봇을 탐지하는 방법: 여섯 가지 신호

IP 주소로 봇을 탐지하려면 소스 IP를 조회해 여섯 가지 신호를 읽으세요. 네트워크 유형, 역방향 DNS, 공개된 크롤러 대역, 익명화 플래그, 스캐너 플래그, 그리고 해당 프리픽스가 보내는 요청 수입니다. IP가 User-Agent보다 나은 출발점인 이유는 단순합니다. 헤더는 클라이언트가 마음대로 정하는 텍스트지만, HTTP 요청은 TCP 핸드셰이크가 완료되어야 하므로 소스 IP는 그냥 위조할 수 없습니다. 현실적인 우회책은 다른 사람의 IP를 임대하거나 프록시로 쓰는 것이며, 이는 아래 섹션에서 다룹니다.

2026-10-07에 봇 종류별로 익명 GeoIPHub API 조회를 한 번씩 실행했습니다.

GeoIPHub API
curl -s https://api.geoiphub.com/v1/lookup/66.249.66.1
IP봇 종류네트워크 (ASN)주요 플래그fraud_scorerecommended_actiondetection_methods
66.249.66.1검증된 크롤러Google (AS15169)is_crawler: true, crawler.name: Googlebot, verified: true0allowdatacenter_ip, no_ptr_datacenter, verified_crawler
104.248.50.21데이터센터 서버DigitalOcean (AS14061)is_hosting: true15allowdatacenter_ip, no_ptr_datacenter
185.220.101.1Tor 출구Stiftung Erneuerbare Freiheit (AS60729)is_tor: true, is_spammer: true100blocktor_exit, datacenter_blocklisted, rdns_tor, known_spammer
162.142.125.10인터넷 스캐너Censys (AS398324)is_scanner: true, is_hosting: false0allow(비어 있음)
104.28.46.99프라이버시 릴레이Cloudflare (AS13335)is_relay: true, relay_provider: iCloud Private Relay9allowrelay_ip

점수 열을 위에서 아래로 읽으면 핵심 교훈이 드러납니다. 2026-10-07의 GeoIPHub 조회에서 차단된 것은 Tor 출구(fraud_score 100)뿐이었습니다. Googlebot은 0점, Censys 스캐너는 0점, iCloud Private Relay 출구는 9점, DigitalOcean 서버는 15점이었고 모두 allow입니다. 점수가 답하는 질문은 "이 IP가 얼마나 위험한가?"이지 "이것이 봇인가?"가 아닙니다. 15점짜리 데이터센터 서버와 0점짜리 스캐너는 둘 다 자동화이지만, 그 자체로 위험하지는 않습니다. 목록 일치는 여기서 가장 신뢰할 수 있는 신호이고, 네트워크 유형 플래그는 추론이라서 점수를 조금만 움직입니다. 이는 벤치마크가 아니라 단건 조회 다섯 건이며, 값은 대역이 바뀜에 따라 달라집니다.

각 신호가 알려 주는 내용과 자세한 설명이 있는 곳은 다음과 같습니다.

  • 네트워크 유형 (asn.asn_type, asn.user_type, detection.is_hosting). IP를 광고하는 네트워크인 ASN은 그 IP가 누구의 네트워크인지 알려 줍니다. 데이터센터(호스팅) IP, 즉 API의 detection.is_hosting은 첫 번째 필터입니다. 대부분의 봇은 데이터센터에서 실행되고 대부분의 사람은 그렇지 않기 때문입니다. 다만 이것만으로는 약한 판단 근거이며, DigitalOcean이 15점을 받은 이유가 이것입니다. 데이터센터 IP 주소란 무엇인가에서 호스팅을 어떻게 탐지하고 언제 정상적인지 설명합니다.
  • 역방향 DNS (network.ptr_record, fcrdns_valid). 정방향으로 확인된 호스트 이름은 운영 주체를 알려 줄 수 있습니다. Tor 출구의 PTR은 tor-exit.artikel10.org로 끝나며 rdns_tor를 발생시켰습니다. 우리 쪽 한계가 하나 있습니다. API는 Googlebot과 DigitalOcean IP의 PTR을 저장하지 않지만 dig -x는 두 IP 모두 실제 이름을 반환하므로, 이들에게는 no_ptr_datacenter가 발생합니다. 호스트 이름이 중요할 때는 DNS 확인을 직접 실행하세요.
  • 공개된 크롤러 대역 (threat.crawler). IP를 운영 주체 자신의 대역 파일과 대조하는 것이 봇이 자칭하는 대로인지 확인하는 가장 확실한 증거입니다. GeoIPHub는 Google, Microsoft(Bing), Apple, DuckDuckGo, OpenAI, Anthropic, Perplexity, Mistral, Common Crawl, Ahrefs의 공식 대역 피드 19개를 불러오며 매일 다시 가져옵니다.
  • Tor, VPN, 프록시, 릴레이 플래그 (detection.is_tor, is_vpn, is_proxy, is_relay). 실제 클라이언트가 다른 사람의 네트워크 뒤에 숨어 있다는 뜻입니다. IP로 Tor 트래픽을 탐지하는 방법과 VPN 및 프록시 탐지의 작동 원리를 참고하세요.
  • 스캐너 플래그 (threat.is_scanner). 인터넷 전체를 대상으로 하는 스캐너는 도달할 수 있는 모든 주소를 탐색합니다.
  • 프리픽스별 요청 속도. 이 신호는 저희가 아니라 여러분이 계산합니다. 아래 속도 제한 섹션에서 설명하듯 IPv6에서는 /64 단위로 요청 수를 세세요.

스캐너 결과는 저희도 의외였기 때문에, 실제 응답에서 일부만 발췌해 싣습니다.

GeoIPHub API
{ "ip": "162.142.125.10", "asn": { "asn": 398324, "org": "CENSYS-ARIN-01 - Censys, Inc.", "asn_type": "unknown" }, "detection": { "is_hosting": false, "is_proxy": false, "is_vpn": false }, "threat": { "is_scanner": true, "threat_types": ["scanner"], "crawler": { "verified": false, "name": "none" } }, "scoring": { "fraud_score": 0, "recommended_action": "allow", "detection_methods": [] } }

스캐너 플래그는 설정되어 있지만 점수에는 아무것도 더하지 않으며, Censys의 네트워크는 호스팅으로 분류되지도 않습니다. recommended_action만으로 규칙을 정하면 스캐너 트래픽은 통과합니다. 분석에서 제외하거나 방화벽에서 차단하려면 threat.is_scanner를 직접 읽으세요.

봇 IP 주소 확인: 이 크롤러는 자칭하는 그 크롤러인가?

봇 IP 주소 확인은 User-Agent를 믿지 않고, 자칭 크롤러의 IP를 운영 주체가 공개한 대역 파일 또는 정방향 확인을 거친 역방향 DNS 이름과 대조해 검증하는 작업입니다. 어떤 클라이언트든 헤더에 Googlebot을 넣어 보낼 수 있습니다. IP 대역을 통제하는 것은 운영 주체뿐입니다.

저희 API는 IP만 볼 뿐 여러분의 요청 헤더는 보지 못하므로 비교는 코드에서 해야 합니다. 자칭하는 봇의 운영 주체를 threat.crawler.verified 및 threat.crawler.operator와 비교하세요. threat.crawler.name을 기준으로 삼지 마세요. 그것은 파일의 라벨이며, 파일 하나가 여러 봇을 포함할 수 있습니다. 저희 조회에서 66.249.66.1은 verified: true, name: "Googlebot", verification_method: "ip_range_list"를 반환했습니다. DigitalOcean 서버는 name: "none"을 반환했으므로, 그곳에서 온 Googlebot 주장은 검증되지 않은 것입니다. 이는 "그 봇으로 검증되지 않았다"는 뜻이지 가짜라는 증거는 아닙니다.

ClaudeBot과 PerplexityBot은 Anthropic과 Perplexity가 공개하는 대역 파일로 확인됩니다. 2026-10-08에 216.73.216.10은 verified: true, name: "ClaudeBot", operator: "Anthropic"을 반환했습니다. 대역 파일을 공개하지 않는 봇은 역방향 DNS 같은 운영 주체 고유의 방법이 여전히 필요합니다. Web Bot Auth로 요청에 서명하는 봇은 IP 대신 서명으로 검증할 수 있습니다.

자세한 내용은 네 편의 글에 있습니다. 크롤러 검증 가이드는 역방향 DNS, CIDR 파일, Web Bot Auth 서명을 다룹니다. Googlebot 검증 및 가짜 Googlebot 식별 방법은 Google의 크롤러 그룹 세 가지와 각 대역 파일을 다룹니다. GPTBot vs OAI-SearchBot vs ChatGPT-User는 어떤 OpenAI 봇을 차단해야 하는지와 각각의 확인 방법을 다룹니다. 검증된 크롤러 IP 목록에는 19개 파일 전체와 날짜, 허용 목록 코드가 있습니다.

IP 기반 봇 탐지로 알 수 없는 것

IP 기반 봇 탐지로는 가정용 IP가 주거용 프록시로 임대되고 있는지 알 수 없으며, GeoIPHub는 주거용 프록시를 탐지하지 않습니다. 주거용 프록시 네트워크는 봇의 요청을 누군가의 가정용 회선을 거쳐 보냅니다. IP 계층에서 그 요청은 해당 가정의 평소 트래픽처럼 보입니다. 소비자용 ISP, 실제 도시, 호스팅 플래그 없음의 조합입니다.

저희 is_residential_proxy 필드는 ASN 기반의 대략적인 추론일 뿐 탐지가 아니므로 신호가 없는 것으로 취급하세요. 로테이션은 상황을 더 어렵게 만듭니다. 풀이 요청마다 다른 가정용 IP를 줄 수 있어서 IP별 카운터가 올라가지 않습니다.

봇넷도 같은 사각지대를 공유합니다. 감염된 가정용 기기는 평범한 가정용 IP에서 봇 트래픽을 보내며, 봇넷 피드는 명령 제어 서버 같은 알려진 인프라를 다룰 뿐 감염된 모든 기기를 다루지는 않습니다. 봇이 IP 탐지를 우회하는 일반적인 방법은 네 가지입니다. 주소 로테이션, 주거용 프록시 임대, IPv6 /64 안에서 주소 순환, 그리고 실제 휴대폰과 통신사 IP를 공유하는 모바일 프록시 경유입니다.

  • 주거용 프록시. 탐지되지 않습니다. 계정별 요청 속도, 디바이스와 세션 불일치 같은 행동으로 잡으세요.
  • User-Agent와 기타 헤더. API는 이를 볼 수 없습니다. 주장은 여러분의 코드에서 비교하세요.
  • 입력하는 주체. 같은 사무실 IP에 있는 헤드리스 브라우저와 사람은 이 계층에서 똑같아 보입니다.
  • 최근 이틀 안에 공개된 대역. 크롤러 대역 파일은 매일 다시 가져오고 조회 데이터베이스도 매일 다시 빌드하므로, 새로 생긴 대역은 최대 약 이틀 동안 검증되지 않은 상태로 남을 수 있습니다.
  • 저희 19개 피드 밖의 크롤러. 무엇을 자칭하든 검증된 신원이 없습니다.
  • 스캐너 위험. is_scanner는 설정되지만, 저희 조회에서는 fraud_score를 높이지 않았습니다.

이런 공백을 메우는 계층은 IP 옆에 있습니다. 행동과 요청 속도, 디바이스 핑거프린팅, JA3와 JA4 같은 TLS 핑거프린트, 챌린지, 그리고 스스로를 밝히는 봇을 위한 Web Bot Auth입니다. 레지덴셜 쪽은 조회로 무엇을 보여 줄 수 있고 무엇을 못 보여 주는지를 다룬 주거용 프록시 사기 탐지와, 왜 이렇게 많은지를 설명한 내 트래픽에 주거용 프록시가 이렇게 많은 이유를 읽어 보세요.

회원가입, 로그인, 결제에서 봇 트래픽을 탐지하는 방법

회원가입, 로그인, 결제에서 봇 트래픽을 탐지하려면 행동이 일어나는 시점에 IP 조회를 실행하고, 앱이 이미 알고 있는 정보와 결합하세요. 계정별, 프리픽스별, 디바이스별 시도 횟수입니다. IP는 범위를 좁혀 주고, 판단은 여러분의 카운터가 내립니다.

엔드포인트마다 신호의 비중이 다릅니다.

  • 로그인. 크리덴셜 스터핑은 시도를 여러 IP에 분산하며, 그 IP는 흔히 IP 계층에서 플래그를 붙일 수 없는 레지덴셜 IP입니다. 그래도 Tor와 호스팅 플래그는 허술한 부분을 잡아냅니다. 계정 탈취 및 크리덴셜 스터핑 가이드에서 계층형 대응 방안을 다룹니다.
  • 결제. 결제 시점의 데이터센터 IP는 정상적인 AI 쇼핑 에이전트일 수 있으므로, 호스팅은 차단 사유가 아니라 가중치를 둔 입력값입니다. DigitalOcean 서버는 15점으로 allow였습니다. 결제 단계에서 AI 쇼핑 에이전트 사기를 막는 방법을 참고하세요.
  • 광고 클릭. 호스팅과 Tor 플래그는 전환 데이터에서 제외할 만한 클릭을 표시합니다. IP 주소로 클릭 사기를 탐지하는 방법 가이드에서 점수 산정을 보여 드립니다.
  • 회원가입. 같은 구간이 적용되며, 한 프리픽스에서 여러 계정이 생성되는지 확인하는 점검이 추가됩니다.

기본 조치는 점수 구간을 따르세요. 25점까지는 allow, 50점까지는 review, 75점까지는 step_up, 75점 초과는 block입니다. 점수가 다루지 않는 플래그, 예를 들어 is_scanner에는 직접 규칙을 추가하세요.

실제 사용자를 막지 않고 봇 IP에 속도 제한을 거는 방법

봇 IP의 속도 제한은 하나의 행위자에 대응하는 단위로 거세요. IPv6에서는 /64, IPv4에서는 단일 주소이며, CGNAT와 iCloud Private Relay 같은 공유 출구에 맞게 조정합니다. 단위를 잘못 세면 봇을 놓치거나 무고한 다수를 처벌하게 됩니다. AI 크롤러에 한해서는 허용, 검증, 속도 제한 중 무엇을 택할지를 AI 크롤러를 차단해야 할까에서 다룹니다.

IPv6에서는 가입자 한 명이 /64 전체를 받아 비용 없이 그 안에서 주소를 바꿀 수 있으므로, 주소별 카운터는 절대 임계값에 닿지 않습니다. /64 프리픽스로 IPv6 속도 제한 및 차단하기 가이드에서 키 함수와, /56이나 /48로 넓혀야 하는 경우를 보여 드립니다.

IPv4에서는 반대 문제가 생깁니다. 여러 사람이 한 주소를 공유합니다. 통신사급 NAT(CGNAT)는 한 동네를 IP 하나 뒤에 둡니다. API는 이를 threat.is_cgnat으로 표시하며, 점수 산정은 CGNAT 주소의 위험도에 상한을 둡니다. iCloud Private Relay도 Apple 사용자에게 같은 일을 합니다. 저희 릴레이 IP는 9점, allow, 방식은 relay_ip였습니다.

릴레이의 지리적 위치도 주의가 필요합니다. 저희 조회는 104.28.46.99를 앙골라의 루안다로 표시했습니다. 이는 릴레이의 출구 위치일 뿐 사용자가 어디 있는지의 증거가 아니므로, 이를 근거로 지역 차단을 하지 마세요. 실제 고객을 막지 않고 익명화된 트래픽 탐지하기 가이드에서 Apple이 공개한 출구 목록과 릴레이 처리 방법을 설명합니다.

IP 기반 봇 탐지, 어디서부터 시작할까

IP 기반 봇 탐지를 실행에 옮기려면 각 신호를 기본 조치에 연결하세요. 의심스러운 단일 주소라면 IP 조사 전체 플레이북을 대신 따르세요. 검증된 크롤러는 허용하고, 검증되지 않은 크롤러 주장은 속도를 제한하고, Tor는 차단하거나 추가 인증을 요구하며, IP가 레지덴셜처럼 보일 때는 행동 신호를 사용합니다. 아래 표의 각 행은 신호 하나, 그것이 증명하는 것, 기본 조치, 그리고 이를 다루는 글입니다.

신호알려 주는 것기본 조치다음에 읽을 글
User-Agent와 일치하는 이름의 threat.crawler.verified봇이 자칭하는 그대로임크롤러 허용 기준으로 허용크롤러 검증 가이드
크롤러 User-Agent, crawler.name이 "none"주장이 검증되지 않음 (가짜라는 증거는 아님)속도 제한 또는 챌린지Googlebot 검증, OpenAI 봇 비교
detection.is_hosting: true, 그 외 없음데이터센터 IP: 스크립트, 에이전트 또는 업무용 프록시허용하되 요청 속도를 관찰데이터센터 IP란 무엇인가
detection.is_tor: true익명화된 출구, 흔히 차단 목록에 올라 있음차단하거나 민감한 작업에서 추가 인증Tor 트래픽 탐지 방법
threat.is_scanner: true인터넷 전체 스캐너, 점수는 낮게 유지됨분석에서 제외하거나 방화벽에서 차단이 글
detection.is_relay: true실제 사용자를 중계하는 프라이버시 릴레이허용, 표시된 도시는 신뢰하지 않음고객을 막지 않는 익명화 트래픽 처리
한 IPv6 /64에서 오는 다수의 요청주소를 바꾸는 단일 행위자/64에 속도 제한, 지속되면 범위를 넓힘프리픽스로 IPv6 속도 제한
소비자용 ISP, 깨끗한 점수, 봇 같은 행동주거용 프록시일 수 있음, IP로는 확인 불가행동 신호와 세션 신호 사용주거용 프록시 사기 탐지

내 트래픽이 어디에 해당하는지 가장 빠르게 확인하는 방법은 이렇습니다. 어제 로그에서 가장 많이 요청한 IP 20개를 뽑아 무료 IP 조회 도구에 각각 붙여 넣거나, 키 없이 curl -s https://api.geoiphub.com/v1/lookup/<ip>를 실행하세요(분당 30회 조회, 무료 키가 있으면 하루 1,500회). 이를 첫 번째 표의 봇 종류별로 정렬해 보면 이 지도에서 어느 섹션부터 읽어야 할지 알게 됩니다.

자주 묻는 질문

IP 주소만으로 봇을 탐지할 수 있나요?

부분적으로 가능합니다. IP 조회로 요청이 어떤 종류의 네트워크에서 왔는지 알 수 있습니다. 공개된 크롤러 대역, 데이터센터 서버, Tor 출구, VPN, 프라이버시 릴레이, 알려진 스캐너 중 무엇인지입니다. 하지만 요청을 보낸 것이 사람인지 스크립트인지는 알 수 없고, 주거용 프록시 네트워크로 임대된 가정용 IP도 가려내지 못합니다. IP는 요청 빈도, 계정 이력, 디바이스 신호와 함께 하나의 입력값으로 사용하세요.

봇 IP 주소가 진짜 크롤러인지 어떻게 확인하나요?

IP를 운영 주체가 공개한 대역 파일과 대조하거나, 역방향 DNS 조회를 한 뒤 정방향 조회로 확인하세요. User-Agent는 어떤 클라이언트든 임의의 문자열을 보낼 수 있으므로 아무것도 증명하지 못합니다. 2026-10-07에 수행한 조회에서 66.249.66.1은 threat.crawler.verified true와 이름 Googlebot을 반환했지만, DigitalOcean 서버는 크롤러 신원을 전혀 반환하지 않았습니다. 크롤러 검증 가이드에서 역방향 DNS, 대역 파일, Web Bot Auth를 단계별로 다룹니다.

IP 기반 봇 탐지는 얼마나 정확한가요?

신호에 따라 다릅니다. 공개된 목록과 일치하는 경우는 강력한 증거입니다. GeoIPHub는 10개 운영 주체의 공식 크롤러 대역 피드 19개를 매일 다시 가져오고, Tor Project의 출구 목록은 6시간마다 갱신합니다. 호스팅, VPN, 프록시 플래그는 추론입니다. 호스팅 탐지는 엄선한 호스팅 ASN 853개와 클라우드 제공업체 10곳의 공식 대역을 사용합니다. 주거용 프록시는 탐지하지 않습니다. 정확도 수치는 공개하지 않으며, 이 글의 조회 다섯 건은 벤치마크가 아니라 예시입니다.

위험 점수가 높으면 그 IP는 봇인가요?

아닙니다. 점수는 자동화 여부가 아니라 위험도를 측정합니다. 다섯 건의 조회에서 Censys 스캐너는 0점, DigitalOcean 서버는 15점으로 둘 다 allow였지만 분명히 자동화된 트래픽입니다. Tor 출구는 100점, block이었습니다. 트래픽의 정체는 플래그로, 위험도는 점수로 읽으세요.

GeoIPHub는 주거용 프록시를 탐지하나요?

아니요. is_residential_proxy 필드는 ASN 기반의 대략적인 추론일 뿐 탐지가 아닙니다. 프록시 네트워크로 임대된 가정용 IP는 IP 계층에서는 평범한 가정 회선처럼 보이므로, 이를 잡으려면 행동 신호와 세션 신호가 필요합니다.

작성자

GeoIPHub 팀

GeoIPHub API를 만드는 팀

GeoIPHub IP 인텔리전스 API와 스캐너를 만드는 GeoIPHub 팀이 작성했습니다. 초안은 AI의 도움을 받아 준비하고 팀이 편집합니다. API 예시는 예시용으로 표시된 경우를 제외하고 라이브 API에 대한 실제 조회 결과입니다.

이 글 공유하기
더 많은 글

관련 글