使用方法:保存以下代码到相应的py文件,py文件所在的目录要有一个.txt格式的字典文件。
使用流程:运行py程序后,可以输入前缀(即添加域名前面的字符,可以按回车跳过,不添加额外字符),然后输入后缀(同理),然后输入域名(com、net之类的,都可以),最后输入字典文件的名字,读取字典,就开始跑了。
这个程序用的是龙哥的whois,感谢龙哥。
import requests
# coding=utf-8
class Scan(object):
def __init__(self, st, end, domain):
self.st = st # 定义起始字符串
self.end = end # 定义结束字符串
self.domain = domain #定义域名后缀
def run(self, path):
try:
wd_list = open(path, 'r', encoding='utf8').readlines() # 打开并读取文件内容,每行作为一个元素存入列表wd_list
except Exception:
wd_list = open(path, 'r', encoding='gbk').readlines() # 如果utf8解码失败,则使用gbk解码
for wd in wd_list: # 遍历wd_list中的每个元素
wd = self.st + wd.replace('\n', '') + self.end + '.' + self.domain # 组装字符串,将每行的换行符替换为空,并添加起始和结束字符串
url = 'https://whois.gd/{}'.format(wd) # 构建URL,将wd插入到URL中
resp = requests.get(url) # 发送GET请求获取响应内容
if 'No match for' not in resp.content.decode():
# 如果响应内容中不包含特定字符串,则表示域名已注册
print('whois注册了:', wd)
try:
open('whois已注册.txt', 'a', encoding='utf8').write(wd + '\n') # 将已注册的域名写入文件
except Exception:
open('whois已注册.txt', 'a', encoding='gbk').write(wd + '\n') # 如果utf8编码写入失败,则使用gbk编码
continue
else:
print('whois未注册:', wd)
try:
open('whois未注册.txt', 'a', encoding='utf8').write(wd + '\n') # 将未注册的域名写入文件
except Exception:
open('whois未注册.txt', 'a', encoding='gbk').write(wd + '\n') # 如果utf8编码写入失败,则使用gbk编码
if __name__ == '__main__':
st = input('开头:') # 从用户输入获取起始字符串
end = input('结束:') # 从用户输入获取结束字符串
domain = input('后缀:') #输入域名后缀
s = Scan(st, end , domain) # 创建Scan类的实例对象a
path = input('字典:') # 从用户输入获取字典文件名,在根目录的txt,不用输入格式名
s.run('./{}.txt'.format(path)) # 调用实例对象的run方法,并传入字典文件路径作为参数