Python을 사용하여 IP 주소의 위치 정보 얻기

11371 단어 pythonprogramming

소개



우리는 종종 IP 주소 또는 우리의 위치를 ​​알아야 합니다. 이에 대한 또 다른 사용 사례는 웹사이트의 사용자에게 로그인 정보를 보내려는 경우입니다. 이 블로그에서 우리는 파이썬을 사용하여 IP 주소의 위치를 ​​알 수 있는 방법을 볼 것입니다.

도구 준비



목표를 달성하기 위해 아래에 언급된 두 가지 API를 사용합니다.

  • ipify : 이 API는 요청이 들어오는 IP 주소를 아는 데 도움이 됩니다.

  • ipapi : 이 API는 특정 IP 주소에 대한 위치 정보를 가져오는 데 도움이 됩니다.

  • 이러한 API와 상호 작용하기 위해 Python에서 requests 라이브러리를 사용합니다. API를 처음 사용하는 경우 확인this tutorial하여 API에 대해 알아보세요.

    다음과 같이 pip 명령을 사용하여 이 라이브러리를 설치할 수 있습니다.

    $ pip install requests
    


    라이브러리가 설치되면 시작합니다!

    위치 정보 가져오기



    논의한 대로 먼저 첫 번째 API에서 IP 주소를 가져옵니다. 그런 다음 이 IP 주소를 사용하여 이 특정 IP 주소에 대한 위치 정보를 가져옵니다. 그래서, 우리는 두 가지 기능을 갖게 될 것입니다.

    import requests
    
    def get_ip():
        response = requests.get('https://api64.ipify.org?format=json').json()
        return response["ip"]
    
    def get_location():
        ip_address = get_ip()
        response = requests.get(f'https://ipapi.co/{ip_address}/json/').json()
        location_data = {
            "ip": ip_address,
            "city": response.get("city"),
            "region": response.get("region"),
            "country": response.get("country_name")
        }
        return location_data
    
    print(get_location())
    
    


    위의 코드에는 get_ip()get_location() 라는 두 개의 함수가 있습니다. 각각에 대해 별도로 논의해 보겠습니다.

    get_ip() 함수



    ipify의 API documentation에 따라 다음과 같은 JSON 응답을 얻으려면 https://api.ipify.org?format=json 에서 GET 요청을 해야 합니다.

    {
      "ip": "117.214.109.137"
    }
    


    이 응답을 하나의 키-값 쌍이 있는 일종의 Python dictionaryresponse 변수에 저장합니다. 따라서 우리는 키ip의 값을 response["ip"]로 반환했습니다.

    get_location() 함수



    ipapi의 API documentation에 따라 특정 IP 주소에 대한 위치 정보를 얻으려면 https://ipapi.co/{ip}/{format}/에 GET 요청을 해야 합니다. {ip}는 IP 주소로 대체되고 {format}json , jsonp , xml , csv , yaml 중 하나로 대체될 수 있습니다. 이 함수는 내부적으로 get_ip() 함수를 호출하여 IP 주소를 가져온 다음 IP 주소가 있는 URL에 대해 GET 요청을 합니다. 이 API는 다음과 같은 JSON 응답을 반환합니다.

    {
    "ip": "117.214.109.137",
    "version": "IPv4",
    "city": "Gaya",
    "region": "Bihar",
    "region_code": "BR",
    "country": "IN",
    "country_name": "India",
    "country_code": "IN",
    "country_code_iso3": "IND",
    "country_capital": "New Delhi",
    "country_tld": ".in",
    "continent_code": "AS",
    "in_eu": false,
    "postal": "823002",
    "latitude": 24.7935,
    "longitude": 85.012,
    "timezone": "Asia/Kolkata",
    "utc_offset": "+0530",
    "country_calling_code": "+91",
    "currency": "INR",
    "currency_name": "Rupee",
    "languages": "en-IN,hi,bn,te,mr,ta,ur,gu,kn,ml,or,pa,as,bh,sat,ks,ne,sd,kok,doi,mni,sit,sa,fr,lus,inc",
    "country_area": 3287590,
    "country_population": 1352617328,
    "asn": "AS9829",
    "org": "National Internet Backbone"
    }
    


    응답에서 많은 데이터를 얻습니다. 당신에게 맞는 것을 사용할 수 있습니다. 이 자습서에서는 city , regioncountry 만 사용할 것입니다. 그래서 우리는 location_data라는 사전을 만들고 그 안에 모든 데이터를 저장하고 똑같이 반환했습니다.

    마지막으로 get_location() 함수를 호출하고 출력을 출력합니다. 출력은 다음과 같습니다.

    {
      "ip": "117.214.109.137", 
      "city": "Gaya", 
      "region": "Bihar", 
      "country": "India"
    }
    


    결론



    이 블로그에서는 웹 서비스와 상호 작용하여 특정 IP 주소에 대한 위치 정보를 얻는 방법을 배웠습니다.

    읽어 주셔서 감사합니다!

    좋은 웹페이지 즐겨찾기