注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

碳基体

http://weibo.com/tanjiti

 
 
 
 
 

日志

 
 

获得IP的地理位置信IP Geolocation及IP位置可视化  

2013-11-21 12:49:40|  分类: basic |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
一、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"}}

(xxxx,\u7f8e\u56fd是有多不友好)
国内的还有ip138TOOL站长工具纯真,但都不提供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-api.com 的API对调用的频率限制实在是太小了,官方说调用频率需小于2qps(怀疑有点过小,但我就被封过IP,但官方给出的解释就是如此)

 

二、IP位置可视化(用地图来显示当前IP的位置)——iplookup
github上paulshi大牛就分享了个IP地址可视化的工具iplookup(感谢喜欢做有趣的东西并爱分享的程序猿门)

1. 效果展示
(1)查询当前IP的地理位置
获得IP的地理位置信息-IP Geolocation - 碳基体 - 碳基体
 
 (2)查询指定IP的地理位置
获得IP的地理位置信息-IP Geolocation - 碳基体 - 碳基体
 
 (3)查询指定域名的ip地理信息
获得IP的地理位置信息-IP Geolocation - 碳基体 - 碳基体
 
2.iplookup安装
该工具的安装也很简单
第一步:到 https://www.mapbox.com/ 注册帐号,创建一个map,点击Share->Developer,获得mapid
第二步:下载并安装iplookup

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。
  评论这张
 
阅读(2762)| 评论(1)
推荐

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017