Get_domains(调用ICP及mail反查接口获取资产)

写了个小工具,目的是尽可能多的获取资产,这个工具调用的是站长工具的ICP备案查询和邮箱反查功能。

环境:Python3

get_domains.py:

import requests
import re


host = ''
mail = ''

headers = {
    'Cookie':'',
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36'
}

def getdomain_icp(host):
    url = 'https://icp.chinaz.com/ajaxsync.aspx?at=beiansl&callback=jQuery111308504784465392665_1555747182932&host={}&type=host&_=1555747182933'.format(host)
    req = requests.get(url)
    domains = re.findall('MainPage:"(.*?)",',req.text,re.S)
    for domain in domains:
        with open('domains.txt','a+') as f:
            f.write(domain + "\n")



def getdomain_mail(mail):
    url = 'http://whois.chinaz.com/reverse?host={}&ddlSearchMode=1&page=1'.format(mail)
    req = requests.get(url)
    page = re.findall('<span class="col-gray02">共(.*?)页',req.text)[0] #获取页数
    page = int(page) + 1
    for i in range(1,page):
        real_req = requests.get('http://whois.chinaz.com/reverse?host={}&ddlSearchMode=1&page={}'.format(mail,i),headers=headers)
        domains = re.findall('<div class="w13-0 domain"><div class="listOther"><a href="/(.*?)"',real_req.text)
        for domain in domains:
            with open('domains.txt','a+') as f:
                f.write(domain + "\n")

def main(host,mail=''):
    getdomain_icp(host)
    if mail!='':
        getdomain_mail(mail)

if __name__ =='__main__':
    main(host=host,mail=mail)

 

使用时只需要修改host以及mail,host为类似jd.com/tencent.com这种域名,即根域名,另headers中的cookie字段需要自己登录站长工具后在headers中获取,否则mail反查不到所有信息,mail默认为空,可以只使用icp备案查询,即只修改host。

 

未进行去重处理,可以用我上一个工具在获取banner时去重,结果会存在当前目录下的domains.txt中。

 

脚本使用的为单线程,因为怕被封IP。

 

posted @ 2019-04-20 16:45  P1g3  阅读(151)  评论(0编辑  收藏