python实现获取ip、网站备案信息、whois查询

393 阅读1分钟

1.根据域名获取ip

注:这里的域名不能带http头
例如:www.baidu.com

def get_IP(domain):
    try:
        ip=socket.getaddrinfo(domain,'http')
        return ip[0][4][0]
    except:
        return None

2.根据域名查询网址备案信息

2.1 爬虫获取

注:这个是利用站长工具爬取的数据,访问量过大可能会导致ip被封

"""根据域名查询网站备案信息 """
def get_icp_info(domain):
        r=requests.session()
        icpInfo={}
        requ=r.post("http://icp.chinaz.com",{'type':'host','s':domain,'guid':'http://127.0.0.1/','code':'','havecode':0})
        icpInfo=get_web_info(requ.content)
        icpInfo["unit"]=str(icpInfo["unit"]).replace("\n查看截图","")
      #  icpInfo=json.dumps(icpInfo,ensure_ascii=False)   #转化成标准json串可以酌情删去
        return icpInfo
       
 '''解析网站文本内容获取备案消息并保存 '''
def get_web_info(content):
    doc=pq(content)
    item=doc("p")
    if item.eq(8).text()=="该域名被屏蔽":     #检测网站是否被屏蔽查询
        return None
    else:                   #保存查询到的信息
        icpInfo={}
        icpInfo.update({'unit':str(item.eq(9).text()).replace('使用高级查询纠正信息','')})
        icpInfo.update({'nature':str(item.eq(10).text())})
        icpInfo.update({'webIcp':str(item.eq(11).text()).replace('\n查看截图','')})
        icpInfo.update({'webName':str(item.eq(12).text())})
        icpInfo.update({'webIndex':str(item.eq(14).text())})
       # icpInfo.update({'verifyTime':str(item.eq(16).text())})      #该键值为网站备案的审核时间可酌情添加
        return icpInfo

2.2 通过api获取

注:所需库python-whois

import whois
def get_whois_info(domain):
    try:
       info=whois.whois(domain)   #Info返回了所有的whois查询信息,可根据需要选择想要提取的查询方法
       whoisInfo={}
       whoisInfo.update({'registrar':info['registrar']})
       whoisInfo.update({'emails':info['emails']})
       whoisInfo.update({'creationDate':str(info['creation_date'][0])})
       whoisInfo.update({'expirationDate':str(info['expiration_date'][0])})
       return whoisInfo
    except:
       return None