TRACIO는 모든 방문자의 IP 주소를 서버 측에서 분석합니다. VPN, 프록시, Tor 출구 노드, 데이터센터 출처를 플래그로 표시하고, 도시 단위 지오로케이션과 ASN을 확인합니다. 모든 분석은 클라이언트 측 의존성 없이 서버 측에서 실행됩니다.
IP 인텔리전스는 웹훅 페이로드를 통해 애플리케이션에 전달됩니다.
network 객체(VPN/프록시/Tor/데이터센터 불리언과 연결 유형)와
geo 객체(국가, 도시, 좌표, 시간대, ISP)가 모든 웹훅에서 전달됩니다.
전체 페이로드 구조와 서명 검증은 Webhooks를 참조하세요.
VPN, 프록시, Tor, 데이터센터 분류는 연결하는 IP를 기준으로
상용 IP 인텔리전스 데이터베이스(VPN/프록시/Tor 유형은 IP2Location,
지오로케이션과 ASN은 MaxMind)를 사용해 확인됩니다. 각 항목은 웹훅 network
객체에서 단일 불리언으로 노출되며, 공개 페이로드에는 방법별 세부 분류나
신뢰도 점수가 없습니다.
| 플래그 | 필드 | 의미 |
|---|---|---|
| VPN | network.vpn | IP가 알려진 VPN 제공업체에 속함 |
| 프록시 | network.proxy | IP가 데이터센터 또는 레지덴셜 프록시임 |
| Tor | network.tor | IP가 알려진 Tor 출구 노드임 |
| 데이터센터 | network.datacenter | IP가 클라우드/호스팅 제공업체에 속함 |
{ "network": { "vpn": true, "proxy": false, "tor": false, "datacenter": false, "connectionType": "residential" }}// `payload` is the webhook delivery body (/docs/webhooks)if (payload.network.vpn) { // visitor is connecting through a VPN}데이터센터 프록시와 레지덴셜 프록시는 둘 다 network.proxy로 노출되며,
데이터센터 출처는 추가로 network.datacenter로 보고됩니다. 분류는
주요 클라우드/호스팅 제공업체(AWS, Google Cloud, Azure, Oracle Cloud,
Alibaba Cloud, DigitalOcean, Hetzner, OVH, Linode/Akamai, Vultr 등)를 포괄하는
IP2Location 프록시 데이터베이스에서 가져옵니다.
{ "network": { "vpn": false, "proxy": true, "tor": false, "datacenter": true, "connectionType": "datacenter" }}연결하는 IP에서 Tor 출구 노드가 일치하면 network.tor로 노출됩니다. 이와 별개로,
Tor 브라우저 자체는 안티핑거프린팅 설정(canvas/WebGL 저항, UTC 시간대,
반올림된 화면 크기)을 통해 클라이언트 측에서 탐지됩니다 —
Smart Signals를 참조하세요.
도시 단위 지오로케이션과 ASN은 연결하는 IP(MaxMind)로부터 서버 측에서 확인되어
웹훅 geo 객체로 전달됩니다.
| 필드 | 타입 | 설명 |
|---|---|---|
geo.country | string | ISO 3166-1 alpha-2 국가 코드 |
geo.city | string | 도시 이름 |
geo.lat | number | 대략적인 위도 |
geo.lon | number | 대략적인 경도 |
geo.timezone | string | IANA 시간대 식별자 |
geo.isp | string | 인터넷 서비스 제공업체 이름 |
{ "geo": { "country": "CZ", "city": "Prague", "lat": 50.05, "lon": 14.4, "timezone": "Europe/Prague", "isp": "Comcast Cable" }}IP 차단 목록 매칭과 벨로시티(IP 간 / 국가 간 활동) 추적은
현재 공개 계약의 일부가 아닙니다. 웹훅 페이로드와 대시보드 모두
차단 목록 카테고리나 벨로시티 구간을 노출하지 않습니다. 네트워크 위험에 대한
웹훅 표면은 불리언 network 플래그와 연결 유형으로 제한되므로,
위험 판단에는 이들을 decision 및 bot 필드(
Smart Signals 참조)와 함께 사용하세요.
이 코드는 웹훅 페이로드의 network 객체를 직접 읽습니다. 전체 페이로드와
서명 검증은 Webhooks를 참조하세요.
// `payload` is the webhook delivery body (/docs/webhooks)function assessIPRisk(payload: WebhookPayload) { const { vpn, proxy, tor, datacenter } = payload.network
const risks: string[] = [] let riskLevel = "low"
if (tor) { risks.push("Tor exit node") riskLevel = "critical" }
if (vpn) { risks.push("VPN detected") riskLevel = riskLevel === "low" ? "medium" : riskLevel }
if (proxy) { risks.push("Proxy detected") riskLevel = riskLevel === "low" ? "medium" : riskLevel }
if (datacenter) { risks.push("Datacenter IP") riskLevel = riskLevel === "low" ? "medium" : riskLevel }
return { riskLevel, risks }}