Python을 사용하여 IP 주소의 위치 정보 얻기
11371 단어 pythonprogramming
소개
우리는 종종 IP 주소 또는 우리의 위치를 알아야 합니다. 이에 대한 또 다른 사용 사례는 웹사이트의 사용자에게 로그인 정보를 보내려는 경우입니다. 이 블로그에서 우리는 파이썬을 사용하여 IP 주소의 위치를 알 수 있는 방법을 볼 것입니다.
도구 준비
목표를 달성하기 위해 아래에 언급된 두 가지 API를 사용합니다.
목표를 달성하기 위해 아래에 언급된 두 가지 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 dictionary인 response
변수에 저장합니다. 따라서 우리는 키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
, region
및 country
만 사용할 것입니다. 그래서 우리는 location_data
라는 사전을 만들고 그 안에 모든 데이터를 저장하고 똑같이 반환했습니다.
마지막으로 get_location()
함수를 호출하고 출력을 출력합니다. 출력은 다음과 같습니다.
{
"ip": "117.214.109.137",
"city": "Gaya",
"region": "Bihar",
"country": "India"
}
결론
이 블로그에서는 웹 서비스와 상호 작용하여 특정 IP 주소에 대한 위치 정보를 얻는 방법을 배웠습니다.
읽어 주셔서 감사합니다!
Reference
이 문제에 관하여(Python을 사용하여 IP 주소의 위치 정보 얻기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/ashutoshkrris/get-location-information-of-ip-address-using-python-18f2
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
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())
{
"ip": "117.214.109.137"
}
{
"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"
}
{
"ip": "117.214.109.137",
"city": "Gaya",
"region": "Bihar",
"country": "India"
}
이 블로그에서는 웹 서비스와 상호 작용하여 특정 IP 주소에 대한 위치 정보를 얻는 방법을 배웠습니다.
읽어 주셔서 감사합니다!
Reference
이 문제에 관하여(Python을 사용하여 IP 주소의 위치 정보 얻기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/ashutoshkrris/get-location-information-of-ip-address-using-python-18f2텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)