使用python爬虫实现子域名探测问题

 更新时间:2022年07月07日 09:00:53   作者:微雨停了  
子域名枚举是为一个或多个域查找子域的过程,它是信息收集阶段的重要组成部分,这篇文章主要介绍了使用python实现子域名探测,需要的朋友可以参考下

前言

意义:子域名枚举是为一个或多个域查找子域的过程,它是信息收集阶段的重要组成部分。
实现方法:使用爬虫与字典爆破。

一、爬虫

1.ip138

def search_2(domain):
    res_list = []
    headers = {
        'Accept': '*/*',
        'Accept-Language': 'en-US,en;q=0.8',
        'Cache-Control': 'max-age=0',
        'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36',
        'Connection': 'keep-alive',
        'Referer': 'http://www.baidu.com/'
    }
    results = requests.get('https://site.ip138.com/' + domain + '/domain.htm', headers=headers)
    soup = BeautifulSoup(results.content, 'html.parser')
    job_bt = soup.findAll('p')

    try:
        for i in job_bt:
            link = i.a.get('href')
            linkk = link[1:-1]
            res_list.append(linkk)
            print(linkk)
    except:
        pass
    print(res_list[:-1])
if __name__ == '__main__':
    search_2("jd.com")

返回结果:

在这里插入图片描述

2.bing

def search_1(site):
    Subdomain = []
    headers = {
        'Accept': '*/*',
        'Accept-Language': 'en-US,en;q=0.8',
        'Cache-Control': 'max-age=0',
        'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36',
        'Connection': 'keep-alive',
        'Referer': 'http://www.baidu.com/'
    }
    for i in range(1, 16):
        url = "https://cn.bing.com/search?q=site%3A" + site + "&go=Search&qs=ds&first=" + str(
            (int(i) - 1) * 10) + "&FORM=PERE"
        # conn = requests.session()
        # conn.get('http://cn.bing.com', headers=headers)
        # html = conn.get(url, stream=True, headers=headers)
        html = requests.get(url, stream=True, headers=headers)
        soup = BeautifulSoup(html.content, 'html.parser')
        # print(soup)
        job_bt = soup.findAll('h2')
        for i in job_bt:
            link = i.a.get('href')
            print(link)
            if link in Subdomain:
                pass
            else:
                Subdomain.append(link)
    print(Subdomain)
if __name__ == '__main__':
    search_1("jd.com")

返回结果:

在这里插入图片描述

二、通过字典进行子域名爆破

def dict(url):
    for dict in open('dic.txt'):  # 这里用到子域名字典文件dic.txt
        dict = dict.replace('\n', "")
        zym_url = dict + "." + url
        try:
            ip = socket.gethostbyname(zym_url)
            print(zym_url + "-->" + ip)
            time.sleep(0.1)
        except Exception as e:
            # print(zym_url + "-->" + ip + "--error")
            time.sleep(0.1)
if __name__ == '__main__':
    dict("jd.com")

返回结果:

在这里插入图片描述

三、python爬虫操作步骤

1.写出请求头headers与目标网站url

headers = {
        'User-Agent': "Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.10240"
    }
url = "https://site.ip138.com/"

2.生成请求

get:res = requests.get(url + domain, headers=headers)
post:res = requests.post(url + domain, headers=headers, data=data)

3.抓取数据

soup = BeautifulSoup(res.content, 'html.parser')  # 以html解析器解析res的内容

此时print(soup),返回结果:

在这里插入图片描述

4.分析源码,截取标签中内容

1.通过分析源码,确定需要提取p标签中的内容:

job_bt = soup.findAll('p')

此时print(job_bt),返回结果:

在这里插入图片描述

2.继续提取a标签内属性为href的值:

try:
    for i in job_bt:
        link = i.a.get('href')
        linkk = link[1:-1]
        res_list.append(linkk)
        print(linkk)
except:
    pass

得结果:

在这里插入图片描述

3.再进行截取:

res_list[:-1]

得结果:

在这里插入图片描述

四、爬虫一些总结

1.抓取数据,生成soup

soup = BeautifulSoup(res.content, 'html.parser')  # 以html解析器解析res的内容

2.从文档中获取所有文字内容

print(soup.get_text())

3.从文档中找到所有< a >标签的链接

for link in soup.find_all('a'):
    print(link.get('href'))

到此这篇关于使用python实现子域名探测的文章就介绍到这了,更多相关python子域名内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • TENSORFLOW变量作用域(VARIABLE SCOPE)

    TENSORFLOW变量作用域(VARIABLE SCOPE)

    这篇文章主要介绍了TENSORFLOW变量作用域(VARIABLE SCOPE),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01
  • Python GAE、Django导出Excel的方法

    Python GAE、Django导出Excel的方法

    在Python中操作Excel的方法可以通过COM,最常用的跨平台的方法是使用pyExcelerator,pyExcelerator的使用方法可以参考limodou的《使用pyExcelerator来读写Excel文件》。
    2008-11-11
  • python模块导入方式浅析步骤

    python模块导入方式浅析步骤

    这篇文章主要为大家介绍了python中模块导入的方式,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-10-10
  • python3监控CentOS磁盘空间脚本

    python3监控CentOS磁盘空间脚本

    这篇文章主要为大家详细介绍了Python3监控CentOS磁盘空间脚本,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-06-06
  • 对Python模块导入时全局变量__all__的作用详解

    对Python模块导入时全局变量__all__的作用详解

    今天小编就为大家分享一篇对Python模块导入时全局变量__all__的作用详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • 轻量级的Web框架Flask 中模块化应用的实现

    轻量级的Web框架Flask 中模块化应用的实现

    说到flask的模块化,大家可能第一时间想到的都是蓝图,今天我们不讨论蓝图,先从0.2版本中的Module类的实现讲起
    2017-09-09
  • Django框架首页和登录页分离操作示例

    Django框架首页和登录页分离操作示例

    这篇文章主要介绍了Django框架首页和登录页分离操作,结合实例形式分析了Django框架登录、验证、跳转首页等相关操作技巧,需要的朋友可以参考下
    2019-05-05
  • python实现将汉字转换成汉语拼音的库

    python实现将汉字转换成汉语拼音的库

    这篇文章主要介绍了python实现将汉字转换成汉语拼音的库,涉及Python调用word.data字段实现将汉字转换成拼音的功能,非常具有实用价值,需要的朋友可以参考下
    2015-05-05
  • python杀死一个线程的方法

    python杀死一个线程的方法

    由于python线程没有提供abort方法,所以我们需要自己想办法解决此问题,面对这一问题,小编帮大家解决phthon杀死一个线程的方法,需要的朋友一起来学习吧
    2015-09-09
  • Python常用正则函数使用方法详解

    Python常用正则函数使用方法详解

    Python中常用的正则表达式处理函数有re.match(),re.search(),re.sub(),re.split(),re.findall(),re.compile()今天为大家介绍这些函数的使用方法
    2021-10-10

最新评论