如何從由IP位址找到國家,網路上有許多網站提供服務,但幾乎都是付費網站,若是免費服務也大都有數量限制..目前搜集到的網站如下
https://api.ip2country.info/ip?<ip>
http://ip-api.com/json/<ip>
https://extreme-ip-lookup.com/json/<ip>
https://ipapi.co/<ip>/json/
https://ip.nf/<ip>.json
https://api.ipdata.co<ip>?api-key=test
https://ipwhois.app/json/<ip>
以上網站都不需要註刪,且提供一定數量免費查詢的付費網站。
另外python module也有許多模組,但大都是付費網站所提供的功能..我選用了geoip2,因為整合到pyton程式較方便。整合方式如下:
1. install geoip2
pip install geoip2
2. download database
到https://ftp.openbsd.org/pub/OpenBSD/distfiles/下載最新的dbip-country & dbip-city的mmdb檔案,我下載的檔案為dbip-city-lite-2020-11.mmdb.gz & dbip-country-lite-2020-11.mmdb.gz
3. 將資料庫解壓縮到data目錄
4. python程式如下:
import os,sys
import geoip2.database
ip = sys.argv[1]
rtn = {"countryCode":"", "country":""}
with geoip2.database.Reader('data/dbip-country-lite.mmdb') as reader:
try:
response = reader.country(ip)
rtn['countryCode'] = response.country.iso_code
rtn['country'] = response.country.name
except:
pass
print(rtn)
沒有留言:
張貼留言