找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 12010|回复: 2

[代码与实例] Python - ip查询小脚本

50

主题

1057

帖子

1108

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1108

活跃会员热心会员最佳导师默默耕耘突出贡献优秀版主荣誉管理论坛元老

blueelwang 发表于 2014-6-23 10:34:11 | 显示全部楼层 |阅读模式
之前追踪网络故障可能需要打开网址输入ip138等之类的网站查看问题ip归属地,这个脚本再mac/linux用来就是长期命令行操作的时候无需打开浏览器直接查询ip归属地来追踪网络归属地的小脚本,比起打开网页来直观更速度,

PS:最近对该脚本进行了改进,同时使用了ip.138,ip.cn,ip.qq查询地址,因为一方面有时候一个地址库查询未必准确的情况下,综合三者一起查询会增大命中率


  1. #!/usr/bin/env python
  2. #coding=utf-8
  3. '''
  4. 这是模仿在各种查询IP解析的网站上输入IP查询地址的过程
  5. '''
  6. #usage: python filename 8.8.8.8

  7. import urllib, re, sys

  8. class bcolors:
  9.     HEADER = '\033[95m'
  10.     OK_BLUE = '\033[94m'
  11.     OK_GREEN = '\033[92m'
  12.     WARING_YELLOW = '\033[93m'
  13.     FAIL = '\033[36m'
  14.     FLASHING = '\033[35m'
  15.     CRITICAL_RED = '\033[31m'
  16.     END = '\033[0m'

  17. def getip_qq(ip=sys.argv[1]):
  18.         '''
  19.         use QQ database
  20.         '''
  21.         #请求URL,以及请求解析的URL格式变化
  22.         url = "http://ip.qq.com/cgi-bin/searchip"
  23.         data = "searchip1=" + ip

  24.         #不同的网站网页字符编码不同,匹配不同的内容,封装不同的编码
  25.         html = urllib.urlopen(url, data).read().decode("gb2312")

  26.         #查询匹配的内容
  27.         pat = re.compile(r'<span>(.*)</span></p>')
  28.         result = re.findall(pat, html)
  29.         print "ip.qq.com 查询地址:"
  30.         print '    ' + bcolors.OK_GREEN + ip + bcolors.END + " < --- > " + bcolors.WARING_YELLOW + result[0].encode("utf-8").replace(' ', '') + bcolors.END

  31. def getip_ip138(ip=sys.argv[1]):
  32.         '''
  33.         use ip138
  34.         '''
  35.         url = "http://ip138.com/ips1388.asp?ip=%s&action=2" % ip
  36.         html = urllib.urlopen(url).read().decode("gb2312")

  37.         #这是要查询匹配的内容
  38.         string = "本站主数据:".decode("utf-8")
  39.         # print string
  40.         result = re.findall(string+'([^<>]+)</li>',html)
  41.         print "ip138.com 查询地址:"
  42.         print '    ' + bcolors.OK_GREEN + ip + bcolors.END + " < --- > " + bcolors.WARING_YELLOW + result[0].encode("utf-8").replace(' ', '') + bcolors.END

  43. def getip_cn(ip=sys.argv[1]):
  44.         '''
  45.         use ip.cn
  46.         '''
  47.         url = "http://ip.cn/index.php?ip=%s" % ip
  48.         html = urllib.urlopen(url).read().decode("utf-8")
  49.         string = "来自:".decode("utf-8")
  50.         result = re.findall(string+'([^<>]+)</p>',html)
  51.         print "ip.cn 查询地址:"
  52.         print '    ' + bcolors.OK_GREEN + ip + bcolors.END + " < --- > " + bcolors.WARING_YELLOW + result[0].encode("utf-8").replace(' ', '') + bcolors.END

  53. if __name__ == '__main__':
  54.         getip_qq()
  55.         getip_ip138()
  56.         getip_cn()
复制代码


回复

使用道具 举报

0

主题

1

帖子

6

积分

贫民

积分
6
liu594250 发表于 2014-7-4 15:22:16 | 显示全部楼层
:victory:
回复

使用道具 举报

0

主题

1

帖子

6

积分

贫民

积分
6
accipter 发表于 2014-7-24 15:31:51 | 显示全部楼层
学习了,谢谢分享:)
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表