Python实现获取域名所用服务器的真实IP
本来是要写个程序用的,没写完不写了,这一部分就贴出来吧
验证域名和IP
classJianKong():
'''查询IDC信息,封ip和过白名单'''
def__init__(self):
pass
@classmethod
defip_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)
iflen(s)>0:
ip=s[0][0]+'.'+s[0][1]+'.'+s[0][2]+'.'+s[0][3]
returnip
else:
print'IP格式不正确'#弹窗提醒
return''
@classmethod
defdomain_verify(cls,domainStr):
'验证域名规范,返回合法域名列表'
domainList=[]
file=open('c:\domain.txt','r')
domainType=file.readlines()
#去重
domainType=list(set(domainType))
#printdomainType
file.close()
#file=['com','ac','com.cn','net'+'']
forlineindomainType:
#文件中动态读取每个顶级域名进行匹配
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)
iflen(result)>0:
#正确结果添加到返回列表
domainList=domainList+result
#去重
domainList=list(set(domainList))
newList=[]
fordindomainList:
ifdnotindomainTypeandd+'\n'notindomainType:
newList.append(d)
returnnewList
@classmethod
defgetDomainType(cls):
'从工信部网站获取所有合法域名后缀'
file=open('c:/domain.txt','w')
p=re.compile('class=\"by2\">\.(.*?)\ </td>',re.S)
foriinrange(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(WindowsNT6.1;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/44.0.2403.157UBrowser/5.5.6125.14Safari/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)
#prints
#去重
s=list(set(s))
foryins:
file.write(y+'\n')
file.flush()
#printstr(i)+''+y
file.close()
print'完毕'#弹窗完成