1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 获取ip地址解析归属地

获取ip地址解析归属地

时间:2021-06-01 13:32:39

相关推荐

获取ip地址解析归属地

本文目的:

通过分析ip地址归属地解析过程,分享探究问题的基本步骤,逐步认识基础知识的重要。

声明一下:

基于本人知识视野,个人理解能力的限制,文中难免有不当之处,敬请理解。

大家都知道,网上有很多可以查询ip地址归属地的网站,ip138,淘宝,qq等各大网站都提供这种查询,下面以QQ为例,来探究一下如何通过命令行来查询获取归属地的问题。

/cgi-bin/index打开网站,输入要查询的ip

输入要查询的ip地址,于此同时,准备好抓包工具,以便对查询数据进行分析,此处,我开了2个抓包工具,一个是httpwatch网页抓包,一个是wireshark数据包分析。

通过分析数据包,可以看到如下信息

看到绿色部分,采用post提交数据,提交的内容为searchip1=114.114.114.114

OK,此处已经找出规律了,查询采用post提交叫,内容为searchip1=X.X.X.X

那么,可以采用curl进行浏览器模拟提交数据了,命令格式如下

curl URL -d "post提交内容" -e "refer地址" -A "浏览器标识"

#!/bin/bashIP=114.114.114.114curl/cgi-bin/searchip-d"searchip1=$IP"-e"/cgi-bin/index"-A"Mozilla/4.0(compatible;MSIE8.0;WindowsNT5.1;Trident/4.0;QQDownload718;.NETCLR2.0.50727)"

说明:由于curl打开的字符和系统不符合,故无法显示汉字,

可以将结果保存为html,通过浏览器打开,将会看到解析的地址结果。

查看网页源代码

到这里,已经替代了浏览器直接访问,初步取得成果。

事情并未到此结束,下面继续解决字符编码问题

将gh2312字符转换为Utf-8标准字符,借助系统iconv转换

iconv-fgb2312-tutf-8因此命令变为#!/bin/bashIP=114.114.114.114 curl/cgi-bin/searchip-d"searchip1=$IP"-e"/cgi-bin/index"-A"Mozilla/4.0(compatible;MSIE8.0;WindowsNT5.1;Trident/4.0;QQDownload718;.NETCLR2.0.50727)" | iconv-fgb2312-tutf-8|grep "<p>.*"|sed "s/<p>\(.*\).*<span>\(.*\)&nbsp;\(.*\)<\/span><\/p>/\1\2\3/g"

运行结果如下

需求基本搞定,然后是细节完善,写成一个脚本,可以接参数ip地址就自动解析,此处不再写了。当然,这个用python写也许会更好。

这里提供的仅仅是一种思路,解决问题的思路,而解决问题之前,需要具备一定的基础知识

这里需要的知识:

1.能用抓包工具进行抓包,并进行数据包分析2.熟悉curl命令3.熟悉sed,grep等命令进行文本过滤4.其他知识整合能力

完毕,谢谢阅读!

祝大家五一节快乐!

附录一个ip地址归属地解析的python版

#!/usr/bin/envpython#coding=utf8#Filename:monitor_idc.py#Lastmodified:-04-2316:54#Author:itnihao#Mail:itnihao@#Description:importurllib,re,sysdefgetip(ip='114.114.114.114'):url="/cgi-bin/searchip"data="searchip1="+iphtml=urllib.urlopen(url,data).read().decode("gb2312")pat=pile(r'<span>(.*)</span></p>')result=re.findall(pat,html)printip+":"+result[0].encode("utf-8").replace('&nbsp;','')#getip('8.8.8.8')getip()

taobao版本#!/usr/bin/envpython#coding=utf8#Filename:get_out_ip.py#Lastmodified:-04-2817:02#Author:itnihao#Mail:itnihao@#Description:importurllib,re,simplejson#获取出口ip地址html=urllib.urlopen('').read()pat=pile('red">([0-9]+.[0-9]+.[0-9]+.[0-9]+)</span>')ip=re.findall(pat,html)ip=ip[0]#获取ip地址归属地解析url='/service/getIpInfo.php?ip=%s'%ipf=urllib.urlopen(url).read()s=simplejson.loads(f)printip+":"+s['data']['country']+s['data']['area']+s['data']['region']+s['data']['city']+s['data']['isp']

效果如下图

本文转自it你好 51CTO博客,原文链接:/itnihao/1189770,如需转载请自行联系原作者

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。