Search for a command to run...

네이버(NHN)에서는 ncloud 라는 브랜드 아래에서 기업 상대로 서비스를 합니다. 그 중 '26년 1월 1일에 생긴 GeoLocation API가 눈에 띄어서 사용 해봤습니다.
Geolocation 서비스는 IP주소에서 법정동을 뽑아내주는 서비스입니다. 네이버가 일반인 대상으로 서비스를 많이 하다보니 (특히 모바일) 위치 정보를 잘 수집할 수 있었고, 그것을 기반으로 다시 서비스화 해서 이익 창출을 하는 모습입니다.
단, 이통사 IP (일명 통피)는 위치 조회를 지원하지 않습니다.
일반 IP(사무실, 영업장, 개인 집, Wifi)만을 조회할 수 있으니 모바일 IP는 별도의 방안을 찾아보셔야 합니다.
ncloud에서 API 키를 발급 받고 제공하는 예시 코드에 집어넣으면 됩니다. 편의를 위해 API 문서 링크를 붙여놨습니다:
ncloud 제품들이 공통적으로 설명 페이지가 다소 불친절합니다.
해당 코드를 기반으로 NCloudPlatformAPI 같은것을 만들고, 다시 API 서비스별로 클래스 나누면 편리합니다.
public class GeolocationApiClient {
private static final String BASE_URL = "https://geolocation.apigw.ntruss.com";
private static final String GEOLOCATION_PATH = "/geolocation/v2/geoLocation";
private final NCloudPlatformAPI ncpApiClient;
/**
* Equivalent to your old run(ip).
*
* @param ip target IP
* @return raw JSON string response
* <code>{"returnCode": 0,"requestId": "bc412c7c-ea3a-4e6a-9417-f50041ad4138","geoLocation":{"country":
* "KR","code": "1120069000","r1": "서울특별시","r2": "성동구","r3": "성수2가3동","lat": 37.548222,"long": 127
* .055265,"net": "Korea Telecom"}}</code>
*/
public String geoLocation(String ip) {
MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
params.add("ip", ip);
params.add("ext", "t");
params.add("responseFormatType", "json");
return ncpApiClient.call(
HttpMethod.GET,
BASE_URL,
GEOLOCATION_PATH,
params,
null,
MediaType.APPLICATION_JSON
);
}
}
(사실 예시 코드만 해도 충분히 쓸만 합니다. 하지만 이렇게 나눠두면 기분이가 좋자나요)

ncloud는 해외 IP나 국내 리전의 해외 클라우드 플랫폼의 IP조회도 너무 못합니다. 예를 들어, 오라클 클라우드 춘천리전을 미국으로 표시 합니다. 그래서 국내 IP 대역에 한해 ncloud를 사용하고, 일반 사용자들이 쓰지 않는 데이터센터용 IP 또는 해외 IP는 maxmind db를 쓰는게 좋습니다. 그래서 필자도 인터페이스 하나를 만들고 조건에 따라 naver / maxmind를 쓰도록 처리를 했습니다. 위의 예시 코드는 그것의 밑천이 되는 코드입니다.
사실 위의 내용들은 주저리주저리였습니다.
우리한테 중요한건 "실제 그래서 어떤데?" 겠죠? 결과를 미리 요약해 드리자면 거의 정확한 수준을 보여줍니다. 내부 테스트 결과, "당감4동"이 "당감3동" 표시되는 수준의 정확도를 보여줬습니다.
공개할 수는 없지만 경기도(파주), 서울(3개 이상의 구), 부산에 걸쳐서 10개 가량의 IP를 테스트해 봤습니다. 지인의 IP도 여럿 넣어보고, 회사 사무실의 IP도 넣어봤습니다.
네이버 Geolocation이 제공하는 위도, 경도는 해당 동의 동사무소(주민센터) 좌표 입니다. 정확한 위치를 주는 대신에 동사무소의 위치값이 나옵니다. 실제 지도에 marker로서 표시할 때 참고해야 합니다.
대학교 IP (경성대학교 : 부산광역시 남구 대연동)

부산 친척집 IP
파주 지인집 IP

로그인 후 댓글을 작성할 수 있습니다.