Python实现获取域名所用服务器的真实IP


Posted in Python onOctober 25, 2015

本来是要写个程序用的,没写完不写了,这一部分就贴出来吧

验证域名和IP

class JianKong():
  '''查询IDC信息,封ip和过白名单'''
  def __init__(self):
    pass
  @classmethod
  def ip_verify(cls,str):
    '验证IP地址规范'
    pattern=re.compile('(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])')
    s=pattern.findall(str)
    if len(s)>0:
      ip=s[0][0]+'.'+s[0][1]+'.'+s[0][2]+'.'+s[0][3]
      return ip
    else:
      print 'IP格式不正确'#弹窗提醒
      return ''
  @classmethod
  def domain_verify(cls,domainStr):
    '验证域名规范,返回合法域名列表'
    domainList=[]
    file=open('c:\domain.txt','r')
    domainType=file.readlines()
    #去重
    domainType=list(set(domainType))
    #print domainType
    file.close()
    #file=['com','ac','com.cn','net'+'']
    for line in domainType:
      #文件中动态读取每个顶级域名进行匹配
      line=line.strip()
      pattern=re.compile('([a-z0-9][a-z0-9\-]*?\.'+line+')(?:\s|$)+',re.S)
      #例如[a-z0-9][a-z0-9\-]*?\.com.cn(?:\s|$)+ 中(?:\s|$)表示域名后缀后面必须是空白符或者字符结束(?:)表示括号不用于分组功能
      #防止.com.cn先匹配到.com即停止匹配导致错误,或者匹配到.comc多了字符
      result=pattern.findall(domainStr)
      if len(result)>0:
        #正确结果添加到返回列表
        domainList=domainList+result
    #去重
    domainList=list(set(domainList))
    newList=[]
    for d in domainList:
      if d not in domainType and d+'\n' not in domainType:
        newList.append(d)
           
    return newList
  @classmethod
  def getDomainType(cls):
    '从工信部网站获取所有合法域名后缀'
    file=open('c:/domain.txt','w')
    p=re.compile('class=\"by2\">\.(.*?)\ </td>', re.S)
    for i in range(1,23):
      data='domainName=&domainBlur=0&page.pageSize=20&pageNo='+str(i)+'&jumpPageNo='+str(i)
      header={'Host':'www.miitbeian.gov.cn','Origin':'http://www.miitbeian.gov.cn','User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.157 UBrowser/5.5.6125.14 Safari/537.36','Referer':'http://www.miitbeian.gov.cn/basecode/query/queryDomain.action;jsessionid=HSTRWpLZbR0cX4vFkDpnpbNBYyRl4GwW1fxpyhdyc0fcfhkvJTBV!1139295987'}
      url='http://www.miitbeian.gov.cn/basecode/query/queryDomain.action;jsessionid=HSTRWpLZbR0cX4vFkDpnpbNBYyRl4GwW1fxpyhdyc0fcfhkvJTBV!1139295987'
      request=urllib2.Request(url,data,header)
      response=urllib2.urlopen(request)
      recv=response.read()
      s=p.findall(recv)
      #print s
      #去重
      s=list(set(s))
      for y in s:
        file.write(y+'\n')
        file.flush()
        #print str(i)+' '+y
    file.close()
    print '完毕'#弹窗完成
Python 相关文章推荐
Python使用random和tertools模块解一些经典概率问题
Jan 28 Python
Python易忽视知识点小结
May 25 Python
Python的包管理器pip更换软件源的方法详解
Jun 20 Python
Python编程实现及时获取新邮件的方法示例
Aug 10 Python
Python实现的三层BP神经网络算法示例
Feb 07 Python
PyQt5每天必学之滑块控件QSlider
Apr 20 Python
Python模拟自动存取款机的查询、存取款、修改密码等操作
Sep 02 Python
django 将model转换为字典的方法示例
Oct 16 Python
python将excel转换为csv的代码方法总结
Jul 03 Python
Python之修改图片像素值的方法
Jul 03 Python
Django框架 查询Extra功能实现解析
Sep 04 Python
Python装饰器结合递归原理解析
Jul 02 Python
Python制作爬虫采集小说
Oct 25 #Python
Python验证企业工商注册码
Oct 25 #Python
日常整理python执行系统命令的常见方法(全)
Oct 22 #Python
Python六大开源框架对比
Oct 19 #Python
Python脚本暴力破解栅栏密码
Oct 19 #Python
python学习笔记之调用eval函数出现invalid syntax错误问题
Oct 18 #Python
在arcgis使用python脚本进行字段计算时是如何解决中文问题的
Oct 18 #Python
You might like
不用iconv库的gb2312与utf-8的互换函数
2006/10/09 PHP
深入PHP许愿墙模块功能分析
2013/06/25 PHP
PHP中file_get_contents函数抓取https地址出错的解决方法(两种方法)
2015/09/22 PHP
Yii2创建控制器(createController)方法详解
2016/07/23 PHP
ThinkPHP3.1.x修改成功与失败跳转页面的方法
2017/09/29 PHP
php和vue配合使用技巧和方法
2019/05/09 PHP
基于jquery.Jcrop的头像编辑器
2010/03/01 Javascript
Array.prototype.slice 使用扩展
2010/06/09 Javascript
在JavaScript里嵌入大量字符串常量的实现方法
2013/07/07 Javascript
AngularJS 实现按需异步加载实例代码
2015/10/18 Javascript
JS实现的竖向折叠菜单代码
2015/10/21 Javascript
web 屏蔽BackSpace键实例代码
2016/12/24 Javascript
nodejs实例解析(输出hello world)
2017/01/03 NodeJs
jQuery实现select下拉框获取当前选中文本、值、索引
2017/05/08 jQuery
Ionic + Angular.js实现验证码倒计时功能的方法
2017/06/12 Javascript
node.js用fs.rename强制重命名或移动文件夹的方法
2017/12/27 Javascript
webpack配置导致字体图标无法显示的解决方法
2018/03/06 Javascript
vue-router的两种模式的区别
2019/05/30 Javascript
详解微信小程序支付流程与梳理
2019/07/16 Javascript
利用JS代码自动删除稿件的普通弹幕功能
2019/09/20 Javascript
javascript设计模式 ? 建造者模式原理与应用实例分析
2020/04/10 Javascript
Python 异常处理实例详解
2014/03/12 Python
python微信聊天机器人改进版(定时或触发抓取天气预报、励志语录等,向好友推送)
2019/04/25 Python
Python scipy的二维图像卷积运算与图像模糊处理操作示例
2019/09/06 Python
Python操控mysql批量插入数据的实现方法
2020/10/27 Python
css 省略号 css3让多余的字符串消失并附加省略号的实现代码
2013/02/07 HTML / CSS
Ibatis中如何提高SQL Map的性能
2013/05/11 面试题
测控技术与通信工程毕业生自荐信范文
2013/12/28 职场文书
《最大的“书”》教学反思
2014/02/14 职场文书
《特殊的葬礼》教学反思
2014/04/27 职场文书
质量管理标语
2014/06/12 职场文书
工伤事故赔偿协议书(标准)
2014/09/29 职场文书
小学生差生评语
2014/12/29 职场文书
勤俭节约倡议书范文
2015/04/29 职场文书
2015年公路路政个人工作总结
2015/07/24 职场文书
java调用Restful接口的三种方法
2021/08/23 Java/Android