- A+
所属分类:shell学习笔记
最近在搞代理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代码,取出我们所需要的内容就行了。
过程如下图所示:
如果刚好你也有这个需求,不妨试试上面提到的方法。
当然,如果你不想安装cygwin,这里提供两个在线工具,同样可以快速批量查询IP地址所在地:
2014-08-18 上午9:29
这方法好呀。
2014-08-18 上午9:42
@屠龙 呵呵,瞎折腾,如果数据量不是很大,直接用文章末尾提到两个在线工具就行了,速度也比较快。shell这种我测试了400多条数据,用时56秒。