Watch-IP

IP 지오로케이션 대 브라우저 기기 위치

브라우저의 기기 Geolocation API(navigator.geolocation)는 사용자의 권한을 요청하며 기기가 측정한 정밀한 위치를 반환할 수 있습니다. IP 지오로케이션은 권한이 필요 없고 모든 요청에서 동작하지만, 연결의 네트워크 주소로부터 위치를 추정할 뿐입니다. 둘은 서로 다른 문제를 해결하며 서로 대체할 수 없습니다.

권한과 소스

navigator.geolocation.getCurrentPosition()(모든 주요 브라우저가 구현한 W3C Geolocation API)은 명시적인 오리진별 권한 요청과, 최신 브라우저에서는 보안(HTTPS) 컨텍스트를 요구합니다. 권한이 허용되면 기기에서 사용 가능한 것에 따라 GPS, Wi-Fi 측위, 기지국 삼각측량, 또는 대체 수단으로 IP를 사용할 수 있습니다. IP 지오로케이션은 권한 요청도, 기기 협조도 필요 없습니다 — GET /v1/geo 같은 API는 접속 요청에서 이를 직접 읽습니다 — 하지만 다룰 수 있는 것은 네트워크 주소뿐입니다.

정확도

권한이 허용된 기기 위치에는 보통 미터 단위의 명시적인 정확도 반경이 포함되며, GPS와 맑은 하늘 시야가 있는 휴대폰에서는 몇 미터 수준까지 정확할 수 있습니다. IP 지오로케이션은 기기가 아니라 네트워크 범위로 해석됩니다 — 국가 수준 결과는 대체로 신뢰할 수 있고, 도시 수준 결과는 실제 추정치이며, 기반 데이터가 그만큼 정밀하지 않기 때문에 Watch-IP를 포함한 어떤 제공업체도 미터 단위 정확도 수치를 반환하지 않습니다. 도시 수준 불확실성에 대한 더 자세한 내용은 정확도 문서를 참고하세요.

실패 상태

기기 지오로케이션은 실패하거나 거부될 수 있습니다 — 사용자가 권한 요청을 거부할 수 있고, 브라우저가 이를 차단하도록 설정되어 있을 수 있고, 데스크톱 기기에는 의미 있는 위치 하드웨어가 없을 수 있으며, 요청이 시간 초과될 수 있습니다. PERMISSION_DENIED, POSITION_UNAVAILABLE, TIMEOUT(API 자체의 오류 코드)는 예외가 아니라 별도의 예상 가능한 결과로 처리하세요. IP 지오로케이션은 다르게 실패합니다 — 해석 가능한 필드가 단순히 null이거나, 제공된 IP 조회의 경우 found: false가 될 뿐이며, 사용자에게 권한 요청을 전혀 표시하지 않습니다.

둘 중에서 선택하기

사용자의 실제 위치가 필요하고 권한을 요청할 명분이 있을 때는 기기 지오로케이션을 사용하세요 — 지도, 매장 찾기, 단계별 내비게이션 등입니다. 마찰이 적은 기본값이 필요할 때는 IP 지오로케이션을 사용하세요 — 국가나 통화를 미리 채우거나, 애널리틱스를 라우팅하거나, 권한을 요청하기 전이나 대신 로케일을 (강제하지 않고) 제안하는 경우입니다. 흔한 패턴은 IP 지오로케이션을 권한이 필요 없는 기본값으로 사용하고, 실제로 정밀도가 필요한 작업에 대해서는 기기 지오로케이션을 사용자가 직접 트리거하는 명시적인 업그레이드로 제공하는 것입니다.

이 문서가 주장하지 않는 것

이는 두 가지 서로 다른 브라우저 메커니즘에 대한 일반적인 비교이며, Watch-IP가 기기 Geolocation API를 구현하거나 감싼다는 주장이 아닙니다 — 실제로 그렇지 않습니다. GET /v1/geo는 IP 기반뿐입니다. 애플리케이션에 기기 지오로케이션도 필요하다면 브라우저 API를 직접 호출하고, 두 결과를 조정하려 하기보다 독립적으로 취급하세요.

출처

Watch-IP 편집팀이 작성했습니다(2026년 9월 6일). apps/web/lib/cf.ts 및 apps/api/src/routes/geo.ts를 기준으로 검토했습니다.

관련 페이지