Programming/Python

Python IP주소로 위도, 경도 위치 찾기 (latitude, longitude)

며용 2020. 12. 4. 23:53

- IP주소 검색해보기

aws cloudfront를 사용하는데 어떤 주소는 aws 본사 위치가 나오고 어떤 건 aws edge server 위치를 알려주고,,
이거 뭐,,


https://www.whtop.com/tools.ip

 

IPv4 & IPv6 location: find Country, Region, City, ISP & more

Free IPv6 and IPv4 location & address locator. Find Country, Region & City based on IP, Zip Code, ISP (name/url), Latitude & Longitude. Updated Dec 2020

www.whtop.com

ip주소 검색 해보는 건 그래서 여기서 검색하는 걸로 바꿨다







- Python

updated: 2020.12.04

예전에 사용했던 것 또한 그런 걸 알고 찾아서 사용했던 건데
가끔 어떤 ip 주소들이 edge server가 아니라 어디에서 실행하던 aws 본사인 seattle로 잡혀서 수정을 했다


새로 찾은 곳은 여기

https://geo.ipify.org

 

IP Geolocation API

IP Geolocation API by IPify enables application developers to support precise location lookups based on a given IP address. Get your API key today.

geo.ipify.org

한 달에 1000건 무료이다 
아직 무료 api 중에 정확하게 나오는 곳을 찾지 못했다,, 명령어인 whois도 마찬가지구,,





여기서 API KEY를 받아서 사용할 수 있고 내 subscription에서 지금까지 얼마나 사용했는지 볼 수 있다




 

request = "https://geo.ipify.org/api/v1?apiKey=%s&ipAddress=%s" % (API_KEY, i)

try:
	with urlopen(request) as url:
            data = json.loads(url.read().decode())
            print(data)

            print(float(data["location"]["lat"]))
            print(float(data["location"]["lng"]))
            print(data["location"]["city"])
            print(data["location"]["region"])
            print(data["location"]["country"])

이렇게 request에 ip 주소를 담아서 요청하면 위치 정보를 돌려준다





 

geo.ipify.org/docs

 

IP Geolocation API

IP Geolocation API by IPify enables application developers to support precise location lookups based on a given IP address. Get your API key today.

geo.ipify.org

api에 대한 자세한 건 여기 문서에서 찾아볼 수 있다












- 2020.07.23

파이썬에서 IP 관련된 건 이것저것 다 해봤다. 근데 무슨 response를 다 통신사 위치로 주더라
결국에 알고 싶었던 건 내가 어디서 다운로드를 해오는지 였어서 고치고 고치다 정착함

import json
from urllib.request import urlopen
def get_location(ip):
  request = "https://geolocation-db.com/json/%s" % (ip)
  
  with urlopen(request) as url:
    data = json.loads(url.read().decode())
    # print(data)
    
    return float(data["latitude"]), float(data["longitude"]), data["city"], data["state"]

url 형식으로 request를 보내면 json 형태로 정보를 return해줌


data를 출력해보면 무슨 정보들이 있는지 나온다