shell批量查询IP地址归属地

shell学习笔记4,647字数 674阅读2分14秒阅读模式

最近在搞代理IP(见上一篇“shell小技巧:用curl批量验证代理IP是否可用”)的时候遇到一个小问题,我需要知道收集到的几百个可用的代理IP地址归属地是哪儿的,然后根据我的需求选择该用哪个IP地址。比较的笨的办法是,把IP地址扔到百度里边,查一个记录一个,如果少量IP的话还可以这么做,但是现在手中有好几百个啊,一个一个查的话,得查好几天呐!于是我在想能不能用程序来批量查,刚好最近在学习shell下一个功能强大的命令curl,想试一下能不能用curl解决,结果很顺利的就解决了!本来想用curl去解析IP地址查询结果页面,再用零宽断言来取出我所需要的数据,结果curl出来的数据已经是很干净的了,直接输出就能用了。

代码如下:

cat ip.txt|sort|uniq|while read line;do curl http://www.ip.cn/index.php?ip=$line;done

解释一下代码意思:用cat命令去读取ip.txt文件,经过sort排序和uniq去重后,结果用while read line来逐个读出,然后把每一条读出的结果传到www.ip.cn/index.php?ip=这个查询地址中去,再通过curl命令解析当前页面的html代码,取出我们所需要的内容就行了。

过程如下图所示:

shell批量查询IP地址归属地

如果刚好你也有这个需求,不妨试试上面提到的方法

当然,如果你不想安装cygwin,这里提供两个在线工具,同样可以快速批量查询IP地址所在地

1、http://hd2001562.ourhost.cn

2、http://ip.soshoulu.com

 
  • 本文由 asdfasd 发表于 2014-08-1800:12:29
  • 转载请务必保留本文链接:http://wp.fangfa.me/shell/ip-location.html
评论  2  访客  2