1.什么是域名。

域名Domain Name),又称网域,是由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时对计算机的定位标识(有时也指地理位置)。 由于IP地址具有不方便记忆并且不能显示地址组织的名称和性质等缺点,人们设计出了域名,并通过网域名称系统(DNS,Domain Name System)来将域名和IP地址相互映射,使人更方便地访问互联网,而不用去记住能够被机器直接读取的IP地址数串。

域名有级别之分,可以分为顶级域名(一级域名)、二级域名、三级域名、多级域名
二级三级和多级则是此网站的子域名。例如:顶级域名:miduoqi.com,二级域名:www.miduoqi.com; 三级域名:.............

2.子域名挖掘的收集原理

常用的收集方式有字典爆破,DNS信息收集,证书查询,爬虫提取子域名等,咱们这次脚本是通过搜索引擎进行子域名搜集。

1.字典爆破
字典爆破就是通过收集来的字典,拼接到顶级域名前面,然后通过自动化工具进行访问,判断返回结果,从而跑出子域名是否存在。
爆破处理接货主要是依赖于字典的精准度,一本好的字典可以让你事半功倍。

2.DNS信息收集
DNS原理就是搜集DNS的解析历史,通过查询dns记录来获取到对方的解析记录,从而获取到子域名,正常来说你的域名经DNS解析过一般就会搜到。

3.证书查询
通过HTTPS 证书,ssl证书等搜集子域名记录。

4.爬虫提取子域名
可以利用爬虫从页面源代码中提取子域名。
原理介绍参考:

(11条消息) 信息搜集-子域名挖掘_小刚的博客-CSDN博客_子域名挖掘https://blog.csdn.net/weixin_43221560/article/details/109118270

3.脚本编写

(1)创建名为子域名挖掘的py文件,导入一些需要用的python模块

#requests库内置了不同的方法来发送不同类型的http请求
import requests                      #BS主要功能是从网页抓取数据,提供一些简单的、python 式的函数用来处理导航、搜索、修改分析树等功能
from bs4 import BeautifulSoup
#模块主要用于解析url中的参数,对url按照一定格式进行 拆分或拼接,将url分为6个部分,返回一个包含6个字符串项目的元组:协议、位置、路径、参数、查询、片段
from urllib.parse import urlparse
import sys

(2)通过bing搜索引擎来进行子域名搜集s

def bing_search(site,pages):Subdomain = []headers = {         #HTTP Headers是HTTP请求和相应的核心,它承载了关于客户端浏览器,请求页面,服务器等相关的信息'User-Agent': 'Mozilla/5.0 (x11; Linux x86_64;rv:68.0)Gecko/20100101 Firefox/68.0',   #是Http协议中的一部分,属于头域的组成部分,是一种向访问网站提供你所使用的浏览器类型、操作系统及版本、CPU 类型、浏览器渲染引擎、浏览器语言、浏览器插件等信息的标识'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',#属于请求报头,代表发送端(客户端)希望接受的数据类型'Referer': "https://cn.bing.com",  #表示一个来源'Cookie': "MUID=3B46E5B***********78X&T=6"   #类型为“小型文本文件”,是某些网站为了辨别用户身份,进行Session跟踪而储存在用户本地终端上的数据(通常经过加密),由用户客户端计算机暂时或永久保存的信息}for i in range(1,int(pages)+1):url = "https://cn.bing.com/search?q=site%3a"+site+"&go=Search&qs=ds&first="+ str((int(i)-1)*10) +"&FORM=PERE"html = requests.get(url,headers=headers)     #获取HTML网页,对应HTTP的GETsoup = BeautifulSoup(html.content,'html.parser')job_bt = soup.findAll('h2')     #返回一个包含HTML文档标题标签h2的列表for i in job_bt:link = i.a.get('href')domain = str(urlparse(link).scheme + "://" +urlparse(link).netloc)  #储存子域名if domain in Subdomain:passelse:Subdomain.append(domain)print(domain)
if __name__ == '__main__':if len(sys.argv) == 3:site = sys.argv[1]page = sys.argv[2]else:print("usage: %s baidu.com 10" % sys.argv[0])         #输出帮助信息sys.exit(-1)Subdomain = bing_search(site,page)

(3) 结果:输入python 子域名挖掘.py baidu.com 5

以上总结或许能帮助到你,或许帮助不到你,但还是希望能帮助到你,如有疑问、歧义,直接私信留言会及时修正发布;非常期待你的点赞和分享哟,谢谢!

子域名挖掘,子域名爆破,Python脚本编写(Python安全攻防)。相关推荐

  1. Linux系统shell脚本、python脚本编写

    GPU排队脚本 python脚本 GPU排队脚本 ---- GPU一旦空闲触发脚本执行程序 参考: GPU排队脚本(python脚本) cmd = 'bash run.sh' 该句设置要执行的pyth ...

  2. python脚本案例-python脚本范例

    广告关闭 2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品.未来,我们一起乘风破浪,创造无限可能. [伯乐在线导读]:有网友在 quora 上提问,「你用 python 写 ...

  3. 四个步骤教你入门Selenium+python脚本编写

    前提:安装了谷歌浏览器.python3和pyCharm编译器 第一步:下载谷歌浏览器插件 此时顺便下载谷歌浏览器的Selenium扩展程序插件,即Selenium IDE, 这个为了以后要查找web端 ...

  4. qpython手机kivy库_QPython Android Kivy,从python脚本启动python脚本

    首先,如何打开命令提示符(bash) 实际上qpython=终端仿真器+Python代码编辑器+Python解释器. 所以你当然可以使用控制台!为什么不能输入bash是因为每次在qpython中单击控 ...

  5. .mat文件批量转成图片——python脚本编写

    .mat文件批量转成图片--python脚本编写 mat文件简介 mat文件是Matlab的数据存储的标准格式.mat文件是标准的二进制文件,还可以ASCII码形式保存和加载,在MATLAB中打开显示 ...

  6. Linux下python脚本编写小结

    Linux下python脚本编写小结 1.如何在linux系统中,看是否安装了python: -which python 或者 which python3 如何在python脚本中使用shell命令: ...

  7. c4d python使用方法_Cinema 4D Python脚本编写必须知道的5行Python代码教程

    Cinema 4D Python脚本编写必须知道的5行Python代码教程 在这期Cinema 4D python教程中的第一篇.Alpha Pixel将介绍如何使用python脚本进行设置,并查看一 ...

  8. python脚本编写_【PyQGIS】编写用于处理框架(QGIS3)的Python脚本

    可以编写可通过QGIS中的Python控制台运行的独立pyqgis脚本.进行一些调整,即可使您的独立脚本通过处理框架运行.这具有几个优点.首先,获取用户输入和写入输出文件要容易得多,因为Process ...

  9. 简单python脚本实例-python脚本例子

    广告关闭 2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品.未来,我们一起乘风破浪,创造无限可能. 简单python脚本:注:1.python 变量不需要$2.for里面的 ...

最新文章

  1. 新手探索NLP(十五)——终章
  2. onnx模型部署(一) ONNXRuntime
  3. android studio 的AVD Manager点击无响应解决办法
  4. 最全Java锁详解:独享锁/共享锁+公平锁/非公平锁+乐观锁/悲观锁
  5. 0 full gc时cpu idle_Go语言中如何观察GC
  6. Xcode常见的编译、运行等错误的解决
  7. linux php错误日志在哪里,宝塔的php错误日志在哪
  8. 学python买什么书-想学python看哪些书
  9. bigdecimal乘法_Java面试题之BigDecimal比较大小问题
  10. 阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第1节 常用函数接口_2_函数式接口的使用...
  11. python基础:购物车代码
  12. Ubuntu安装GCC 3.4
  13. 数学建模方法-多项式拟合
  14. 2022年网络工程师考试知识点:网络攻击
  15. Wowza服务器系列(4):使用rtmp协议向wowza推流的wowoza配置方法
  16. 快速地将SolidWorks模型导入Adams
  17. uni-app引入阿里云矢量图标库
  18. linux设置dns简单的,Linux下的DNS简单配置
  19. Owin + WebApi + OAuth2 搭建授权模式(授权码模式 Part I)
  20. 9.高性能计算 期末复习

热门文章

  1. Oracle 11g Data Guard 物理备库快速配置指南(下)
  2. ACS服务器的备份和恢复
  3. 一个简单的密码生成器
  4. 【C++ 语言】异常 ( 抛出字符串异常 | 抛出异常对象 | 抛出任意对象 | 抛出自定义异常 )
  5. C语言程序设计谭浩强版 九
  6. Cocos2d-x + Android + Eclipse + Windows 7
  7. 微博API接口的调用
  8. java爬虫教程 百度云_java视频教程java爬虫实战项目httpclient hbase springmvc solr
  9. Potplayer制作视频缩略图的方法
  10. dsoframer 使用方法(转)