获得IP的地理位置信IP Geolocation及IP位置可视化
一、IP Geolocation API
淘宝提供的IP查询API,用来查询境外IP时,效果不太好(ip-api.com)
curl ip.taobao.com/service/getIpInfo.php?ip=8.35.201.48
{"code":0,"data":{"country":"\u7f8e\u56fd","country_id":"US","area":"","area_id":"","region":"","region_id":"","city":"","city_id":"","county":"","county_id":"","isp":"","isp_id":"","ip":"8.35.201.48"}}
国内的还有ip138,TOOL站长工具,纯真,但都不提供API
而ip-api.com的IP Geolocation API 则提供更为准确友好的信息
curl ip-api.com/json/8.35.201.48
{"status":"success","country":"United States","countryCode":"US","region":"","regionName":"","city":"","zip":"","lat":"38","lon":"-97","timezone":"","isp":"Level 3 Communications","org":"Google Translate","as":"AS15169 Google Inc.","query":"8.35.201.48"}
而除了以JSON格式提供,还同时支持CSV格式,NEW LINE格式
curl ip-api.com/csv/8.35.201.48
success,"United States",US,,,,,38,-97,,"Level 3 Communications","Google Translate","AS15169 Google Inc.",8.35.201.48
curl ip-api.com/line/8.35.201.48
success (1.是否成功)
United States (2.国家名称)
US (3.国家编号)
(4. 区域名称)
(5.区域编号)
(6.城市)
(7.城市编号)
38(8.纬度)
-97(9.经度)
(10.时区)
Level 3 Communications(11. ISP运营商名字)
Google Translate(12. 公司名字)
AS15169 Google Inc.(13. AS编号与名字)
8.35.201.48 (查询的IP)
当我们需要批量查询IP的归属地时(其实只要查询到ISP,基本就知道IP的的信息了),可以很方便的写个脚本调用该接口,以下有个例子ipISP.pl#!/usr/bin/perl -w
$file = shift;
$fileout = $file.'_out_isp';
open IN, "<$file" or die "cannot open $file for reading : $! ";
open OUT,">$fileout" or die "cannot open $fileout for writing : $!";
while(<IN>){
chomp;
if ($_ =~ /(\S+)/){
$ip = $1;
}
$result = `wget -qO- ip-api.com/line/$ip | awk 'NR==11 {print "ISP: "\$0} '`;
chomp($result);
print OUT $ip."\t".$result."\n";
sleep(1);#一定要等待,否则会被封ip
}
close IN;
close OUT;
perl ipISP.pl ip
ip文件如下61.55.186.22
61.55.186.21
61.55.186.20
61.55.186.18
运行结果如下ip_out_isp
61.55.186.22 ISP: China Unicom Hebei
61.55.186.21 ISP: China Unicom Hebei
61.55.186.20 ISP: China Unicom Hebei
61.55.186.18 ISP: China Unicom Hebei
二、IP位置可视化(用地图来显示当前IP的位置)——iplookup
github上paulshi大牛就分享了个IP地址可视化的工具iplookup(感谢喜欢做有趣的东西并爱分享的程序猿门)
1. 效果展示
(1)查询当前IP的地理位置
(2)查询指定IP的地理位置 (3)查询指定域名的ip地理信息2.iplookup安装
该工具的安装也很简单
第一步:到 https://www.mapbox.com/ 注册帐号,创建一个map,点击Share->Developer,获得mapid
第二步:下载并安装iplookup
git clone https://github.com/paulshi/iplookup.git
cd iplookup/
vim config.py
将第一步中获得的mapid填写进去
创建virtual env
pip install virtualenv
virtualenv ev
source ev/bin/activate
安装依赖包
pip install -r requirements.txt
依赖包有
Flask==0.10.1
Jinja2==2.7.1
MarkupSafe==0.18
Werkzeug==0.9.4
gunicorn==18.0
itsdangerous==0.23
requests==2.0.1
wsgiref==0.1.2
运行就可以了
python main.py
当然有人会说,这样定位地地址不准确,我明明在张江,为啥说我在闵行,拜托,又不是GPS。
来源:碳基体
评论