一个文本有8千万IP,如果查看是哪个地区哪个运营商

利用淘宝ip地址库查:
淘宝ip地址库:http://ip.taobao.com/
API接口:
接口说明
1. 请求接口(GET):
/service/getIpInfo.php?ip=[ip地址字串]
2. 响应信息:
(json格式的)国家 、省(自治区或直辖市)、市(县)、运营商
3. 返回数据格式:
{"code":0,"data":{"ip":"210.75.225.254","country":"\u4e2d\u56fd","area":"\u534e\u5317",
"region":"\u5317\u4eac\u5e02","city":"\u5317\u4eac\u5e02","county":"","isp":"\u7535\u4fe1",
"country_id":"86","area_id":"100000","region_id":"110000","city_id":"110000",
"county_id":"-1","isp_id":"100017"}}
其中code的值的含义为,0:成功,1:失败。
打开浏览器要加上主机头(ip地址字串是自己的ip,可以是文本中的然后写循环):
http://ip.taobao.com//service/getIpInfo.php?ip=[ip地址字串]
首先这个ip是nginx访问日志里面的。我的日志如下:

{"remoteip":"218.3.154.28","URL":"GET /sysdata/image/2018/08/18/f7ee685d2c1957d35fc38b1418c42971.jpeg HTTP/1.1" ,"forwardip":"-"} 200 funnyhot.5dktv.com  [14/Nov/2018:15:14:05 +0800] "Dalvik/2.1.0 (Linux; U; Android 7.1.2; vivo X9s Plus Build/N2G47H)" "-" "0.000" "-" "HIT" "16652"
{"remoteip":"218.3.154.28","URL":"GET /sysdata/mp4/2018/08/17/4571b8b6aa7386a84aa1c3e48d793a10.mp4 HTTP/1.1" ,"forwardip":"-"} 200 funnyhot.5dktv.com  [14/Nov/2018:15:14:06 +0800] "ExoSourceManager/1.4.2 (Linux;Android 7.1.2) ExoPlayerLib/2.8.4" "-" "2.840" "-" "HIT" "11417874"
查看是否有dnspod误解析的问题导致有些联通解析到电信 电信解析到联通,就要查看ip是属于那些地区什么运营商。我这个日志是在电信机房机器的nginx
取日志awk判断第18列(request_time列)请求时间大于5,则打印出这些ip保存到all_ip.log
awk -F'"' '{if ($18>5) print $4}' funnyhot.log | sort -nr -k1 | uniq >all_ip.log
上面取出的ip结果输出到屏幕,可以输出到文件在进行分析统计:
这是利用淘宝ip地址库的api接口写的shelL循环脚本
for i in `cat all_ip.log` ;do curl http://ip.taobao.com/service/getIpInfo.php?ip=$i && sleep 1 ;done
或者脚本全部追加到一个文件以后,再进行过滤。比如我这电信的日志,然后过滤排除电信的,查看剩下的非电信是所有ip的多少占比。

版权声明:
作者:allenjol
链接:https://www.ayunw.cn/archives/228
来源:爱生活,爱运维
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>