Linux

자바스크립트를 사용하여 IP 정보를 가져올 수 있는 다양한 API

게으른냥이 2025. 3. 11. 12:13

1. ipify (https://www.ipify.org)

https://api64.ipify.org?format=json (IPv6 지원)
https://api.ipify.org?format=json (IPv4 전용)

  • 제공 정보: 공용 IP 주소
  • 무료 사용 가능
  • 단점: IP 주소만 제공, 추가 정보 없음

예제 코드

fetch("https://api64.ipify.org?format=json")
  .then(response => response.json())
  .then(data => console.log("공용 IP:", data.ip))
  .catch(error => console.error("IP 정보 가져오기 실패:", error));

2. ipinfo.io (https://ipinfo.io)

https://ipinfo.io/json?token=YOUR_ACCESS_TOKEN

  • 제공 정보: 공용 IP, 도시, 지역, 국가, ISP, 좌표 등
  • 무료 버전: 일일 50회 요청 제한 (더 많은 요청은 유료)
  • 단점: 무료 버전은 요청 제한이 있음

예제 코드

fetch("https://ipinfo.io/json?token=YOUR_ACCESS_TOKEN")
  .then(response => response.json())
  .then(data => console.log("IP 정보:", data))
  .catch(error => console.error("IP 정보 가져오기 실패:", error));

 

응답 예시:

{
  "ip": "123.45.67.89",
  "city": "Seoul",
  "region": "Seoul",
  "country": "KR",
  "loc": "37.5665,126.9780",
  "org": "AS12345 Some ISP"
}

3. ip-api.com (https://ip-api.com)

http://ip-api.com/json/

  • 제공 정보: 공용 IP, 도시, 국가, ISP, 위치 정보 (위도, 경도)
  • 무료 사용 가능 (상업적 사용은 유료)
  • 단점: 너무 많은 요청 시 차단 가능

예제 코드

fetch("http://ip-api.com/json/")
  .then(response => response.json())
  .then(data => console.log("IP 정보:", data))
  .catch(error => console.error("IP 정보 가져오기 실패:", error));


응답 예시
:

{
  "query": "123.45.67.89",
  "status": "success",
  "country": "South Korea",
  "countryCode": "KR",
  "region": "11",
  "regionName": "Seoul",
  "city": "Seoul",
  "zip": "100-011",
  "lat": 37.5665,
  "lon": 126.9780,
  "timezone": "Asia/Seoul",
  "isp": "Some ISP",
  "org": "Some Org",
  "as": "AS12345 Some ISP"
}

4. geolocation-db.com (https://geolocation-db.com)

https://geolocation-db.com/json/

  • 제공 정보: 공용 IP, 국가, 도시, 위도, 경도 등
  • 무료 사용 가능
  • 단점: ISP 정보 제공 안 함

예제 코드

fetch("https://geolocation-db.com/json/")
  .then(response => response.json())
  .then(data => console.log("IP 정보:", data))
  .catch(error => console.error("IP 정보 가져오기 실패:", error));


응답 예시
:

{
  "IPv4": "123.45.67.89",
  "country_name": "South Korea",
  "city": "Seoul",
  "latitude": 37.5665,
  "longitude": 126.9780
}

5. ipgeolocation.io (https://ipgeolocation.io)

https://api.ipgeolocation.io/ipgeo?apiKey=YOUR_API_KEY

  • 제공 정보: 공용 IP, ISP, 도시, 지역, 국가, 우편번호, 시간대 등
  • 무료 버전: 일일 30,000회 요청 가능
  • 단점: API 키 필요

예제 코드

fetch("https://api.ipgeolocation.io/ipgeo?apiKey=YOUR_API_KEY")
  .then(response => response.json())
  .then(data => console.log("IP 정보:", data))
  .catch(error => console.error("IP 정보 가져오기 실패:", error));
{
  "ip": "123.45.67.89",
  "continent_name": "Asia",
  "country_name": "South Korea",
  "region_name": "Seoul",
  "city": "Seoul",
  "zip_code": "100-011",
  "latitude": 37.5665,
  "longitude": 126.9780,
  "isp": "Some ISP"
}

정리 (어떤 API를 선택할까?)

API제공 정보무료 요청 제한단점

ipify 공용 IP 주소 무제한 IP 주소 외 정보 없음
ipinfo.io IP, 도시, 국가, ISP, 위치 일일 50회 API 키 필요
ip-api.com IP, 도시, 국가, ISP, 위치 무제한 과도한 요청 시 차단 가능
geolocation-db.com IP, 도시, 국가, 위도, 경도 무제한 ISP 정보 없음
ipgeolocation.io IP, ISP, 도시, 국가, 우편번호, 시간대 일일 30,000회 API 키 필요

결론

  • 단순히 공용 IP만 필요하면 → ipify (무제한 무료)
  • 위치 및 ISP 정보도 필요하면 → ipinfo.io 또는 ip-api.com
  • API 키 없이 위치 정보까지 필요하면 → ip-api.com
  • 기업용 대량 API가 필요하면 → ipgeolocation.io