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使用os模块的os.walk遍历文件夹示例
Jan 27 Python
Tornado Web服务器多进程启动的2个方法
Aug 04 Python
Python中的os.path路径模块中的操作方法总结
Jul 07 Python
python远程连接服务器MySQL数据库
Jul 02 Python
解决py2exe打包后,总是多显示一个DOS黑色窗口的问题
Jun 21 Python
简单了解Python3里的一些新特性
Jul 13 Python
django迁移数据库错误问题解决
Jul 29 Python
Python Django实现layui风格+django分页功能的例子
Aug 29 Python
py-charm延长试用期限实例
Dec 22 Python
Python模拟键盘输入自动登录TGP
Nov 27 Python
Python列表元素删除和remove()方法详解
Jan 04 Python
利用python进行数据加载
Jun 20 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
剖析 PHP 中的输出缓冲
2006/12/21 PHP
对squid中refresh_pattern的一些理解和建议
2009/04/17 PHP
使用PHP遍历文件目录与清除目录中文件的实现详解
2013/06/24 PHP
Codeigniter实现发送带附件的邮件
2015/03/19 PHP
php简单备份与还原MySql的方法
2016/05/09 PHP
php连接oracle数据库的核心步骤
2016/05/26 PHP
thinkphp中多表查询中防止数据重复的sql语句(必看)
2016/09/22 PHP
yii2 resetful 授权验证详解
2017/05/18 PHP
Laravel框架源码解析之入口文件原理分析
2020/05/14 PHP
JavaScript 三种创建对象的方法
2009/10/16 Javascript
json的前台操作和后台操作实现代码
2012/01/20 Javascript
js call方法详细介绍(js 的继承)
2013/11/18 Javascript
document.execCommand()的用法小结
2014/01/08 Javascript
js获取元素相对窗口位置的实现代码
2014/09/28 Javascript
JavaScript删除指定子元素代码实例
2015/01/13 Javascript
详解JavaScript中Hash Map映射结构的实现
2016/05/21 Javascript
JS switch判断 三目运算 while 及 属性操作代码
2017/09/03 Javascript
webpack项目调试以及独立打包配置文件的方法
2018/02/28 Javascript
Vue请求JSON Server服务器数据的实现方法
2018/11/02 Javascript
如何优雅的在一台vps(云主机)上面部署vue+mongodb+express项目
2019/01/20 Javascript
小程序怎样让wx.navigateBack更好用的方法实现
2019/11/01 Javascript
vuejs中父子组件之间通信方法实例详解
2020/01/17 Javascript
node.js 使用 net 模块模拟 websocket 握手进行数据传递操作示例
2020/02/11 Javascript
JS实现省市县三级下拉联动
2020/04/10 Javascript
vue基于better-scroll仿京东分类列表
2020/06/30 Javascript
详解Python的Django框架中的模版相关知识
2015/07/15 Python
将Python代码嵌入C++程序进行编写的实例
2015/07/31 Python
Python多线程经典问题之乘客做公交车算法实例
2017/03/22 Python
Django自定义manage命令实例代码
2018/02/11 Python
PyCharm刷新项目(文件)目录的实现
2020/02/14 Python
学生的自我鉴定范文
2013/10/24 职场文书
委托书的写法
2014/08/30 职场文书
领导班子四风对照检查材料思想汇报
2014/09/26 职场文书
离退休人员聘用协议书
2014/11/24 职场文书
2016预备党员培训心得体会
2016/01/08 职场文书
HTML页面中使两个div并排显示的实现
2022/05/15 HTML / CSS