获取ip地址解析归属地

简介:

本文目的:

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

声明一下:

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

 

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

http://ip.qq.com/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 "浏览器标识"


 
 
  1. #!/bin/bash 
  2.  
  3. IP=114.114.114.114 
  4. curl http://ip.qq.com/cgi-bin/searchip -d "searchip1=$IP" -e "http://ip.qq.com/cgi-bin/index" -A "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; QQDownload 718; .NET CLR 2.0.50727)" 

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

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

查看网页源代码

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

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

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


 
 
  1. iconv  -f gb2312 -t utf-8 

 

  1. 因此命令变为
  2. #!/bin/bash 
  3.  
  4. IP=114.114.114.114 
  5. curl http://ip.qq.com/cgi-bin/searchip -d "searchip1=$IP" -e "http://ip.qq.com/cgi-bin/index" -A "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; QQDownload 718; .NET CLR 2.0.50727)" | iconv  -f gb2312 -t utf-8| grep "<p>.*"|sed "s/<p>\(.*\).*<span>\(.*\)&nbsp;\(.*\)<\/span><\/p>/\1\2\3/g"

 

运行结果如下

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

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

这里需要的知识:


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

完毕,谢谢阅读!

      祝大家五一节快乐!

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

 


 
 
  1. #!/usr/bin/env python 
  2. # coding=utf8 
  3. # Filename: monitor_idc.py 
  4. # Last modified: 2013-04-23 16:54 
  5. # Author: itnihao 
  6. # Mail: itnihao@qq.com 
  7. # Description: 
  8.  
  9. import urllib,re, sys 
  10. def getip(ip= '114.114.114.114'): 
  11.     url  =  "http://ip.qq.com/cgi-bin/searchip" 
  12.     data =  "searchip1="+ip 
  13.  
  14.     html =  urllib.urlopen(url, data).read().decode("gb2312"
  15.     pat  =  re.compile(r'<span>(.*)</span></p>'
  16.     result= re.findall(pat, html) 
  17.     print ip +": " +  result[0].encode("utf-8").replace('&nbsp;'''
  18. #getip('8.8.8.8'
  19. getip()
  20.  

 
 
  1. taobao版本
  2. #!/usr/bin/env python 
  3. # coding=utf8 
  4. # Filename: get_out_ip.py 
  5. # Last modified: 2013-04-28 17:02 
  6. # Author: itnihao 
  7. # Mail: itnihao@qq.com 
  8. # Description: 
  9.  
  10. import urllib, re, simplejson 
  11.  
  12. #获取出口ip地址 
  13. html=  urllib.urlopen('http://ip.qq.com').read() 
  14. pat =  re.compile('red">([0-9]+.[0-9]+.[0-9]+.[0-9]+)</span>'
  15. ip  = re.findall(pat, html) 
  16.  
  17. ip =  ip[0
  18. #获取ip地址归属地解析 
  19. url  =   'http://ip.taobao.com/service/getIpInfo.php?ip=%s' % ip 
  20. f  =  urllib.urlopen(url).read() 
  21. s=  simplejson.loads(f) 
  22.  
  23. print ip+": "+s['data']['country']+s['data']['area']+s['data']['region']+s['data']['city']+s['data']['isp'

效果如下图



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

相关文章
|
域名解析 应用服务中间件 Linux
【服务器】使用域名解析服务器的IP地址并配置SSL证书
【服务器】使用域名解析服务器的IP地址并配置SSL证书
2900 0
|
域名解析 应用服务中间件 网络安全
自己的ip地址被别人的域名解析到?已解决
自己的ip地址被别人的域名解析到?已解决
858 0
|
缓存 网络协议 安全
【计算巢】DNS 解析过程详解:域名如何转换为 IP 地址
【5月更文挑战第31天】DNS(域名系统)将人类可读的域名转换为IP地址,涉及本地DNS缓存、层次化DNS服务器系统,包括根DNS、顶级域名DNS和权威DNS。当查询域名时,通过DNS服务器间的交互找到对应IP并返回给浏览器。Python示例展示了DNS查询过程。尽管DNS面临安全挑战,如欺骗和缓存中毒,采取安全措施可确保其稳定性和安全性。它是互联网的重要基础,连接域名与IP,支持便捷的网络访问。
778 0
|
网络协议 安全 文件存储
动态DNS(DDNS)技术在当前网络环境中日益重要,它允许使用动态IP地址的设备通过固定域名访问
动态DNS(DDNS)技术在当前网络环境中日益重要,它允许使用动态IP地址的设备通过固定域名访问,即使IP地址变化,也能通过DDNS服务保持连接。适用于家庭网络远程访问设备及企业临时或移动设备管理,提供便捷性和灵活性。示例代码展示了如何使用Python实现基本的DDNS更新。尽管存在服务可靠性和安全性挑战,DDNS仍极大提升了网络资源的利用效率。
2092 6
|
域名解析 网络协议 安全
反向DNS解析是从IP地址到域名的映射,主要作用于验证和识别,提高通信来源的可信度和可追溯性
在网络世界中,反向DNS解析是从IP地址到域名的映射,主要作用于验证和识别,提高通信来源的可信度和可追溯性。它在邮件服务器验证、网络安全等领域至关重要,帮助识别恶意行为,增强网络安全性。尽管存在配置错误等挑战,但正确管理下,反向DNS解析能显著提升网络环境的安全性和可靠性。
841 3
|
网络协议 网络安全 网络虚拟化
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算。通过这些术语的详细解释,帮助读者更好地理解和应用网络技术,应对数字化时代的挑战和机遇。
1397 3
|
存储 网络协议 安全
30 道初级网络工程师面试题,涵盖 OSI 模型、TCP/IP 协议栈、IP 地址、子网掩码、VLAN、STP、DHCP、DNS、防火墙、NAT、VPN 等基础知识和技术,帮助小白们充分准备面试,顺利踏入职场
本文精选了 30 道初级网络工程师面试题,涵盖 OSI 模型、TCP/IP 协议栈、IP 地址、子网掩码、VLAN、STP、DHCP、DNS、防火墙、NAT、VPN 等基础知识和技术,帮助小白们充分准备面试,顺利踏入职场。
2106 2
|
网络协议 Python
IP地址探秘:识别与解析的Python之旅 🚀
《IP地址探秘:识别与解析的Python之旅》通过Python的`ipaddress`模块,轻松实现IP地址的分类(如单播、多播、私有、环回或公有)及子网内所有IP的生成,使网络管理更加便捷高效。示例代码直观展示了功能实现过程。
273 1
|
域名解析 缓存 网络协议
揭秘DNS协议:从'http://www.example.com'到IP地址的奇幻旅程,你不可不知的互联网幕后英雄!
【8月更文挑战第4天】在互联网的广袤空间里,每台设备都有唯一的IP地址,但记忆这些数字组合并不直观。因此,DNS(域名系统)作为关键桥梁出现,将易记的域名转换为IP地址。DNS协议工作于应用层,支持用户通过域名访问资源。DNS系统包含多级服务器,从根服务器到权威服务器,共同完成域名解析。查询过程始于客户端,经过递归或迭代查询,最终由权威服务器返回IP地址,使浏览器能加载目标网页。
705 12
|
运维 监控 API
CloudStack 中的IP地址状态解析:Allocated、Reserved与Free
CloudStack 中的IP地址状态解析:Allocated、Reserved与Free
401 9

推荐镜像

更多
  • DNS