首页 > 编程语言 >Python安全脚本之自动化子域名收集

Python安全脚本之自动化子域名收集

时间:2024-03-21 17:30:05浏览次数:20  
标签:__ domain Python workers url 域名 自动化 033

声明:本工具仅用于日常学习使用,禁止用于非法域名收集,否则后果由使用者承担!!!

在信息收集中少不了一些脚本的辅助,本文将讲解如何编写一个自动化子域名收集脚本

代码及注释如下:

from concurrent.futures import *
import requests
banner='''
   ____ ____        _              
  / ___|  _ \ _ __ (_)_ __   ___   
 | |  _| | | | '_ \| | '_ \ / _ \  
 | |_| | |_| | | | | | | | |  __/_ 
  \____|____/|_| |_|_|_| |_|\___(_)
        关注公众号The security.
        本工具仅用于日常学习使用,禁止用于非法域名收集,否则后果由使用者承担!!!
'''
headers = {
        'User-Agent': 'Mozilla/5.0 (x11; Linux x86_64;rv:68.0)Gecko/20100101 Firefox/68.0'   
    }
def check_domain(url,num_threads=10):     #定义一个检查domain状态的函数
        try:            #这里使用try是因为这样才能避开不存在的url的异常,从而继续执行文件里的下一个参数
            resp = requests.get(url=url,headers=headers,timeout=3)
            if resp.status_code == 200:
                print(f"\033[32m{url}\033[0m")   
            else:                       #基于目标网址存在的情况,状态码为200时返回该url,不为200时返回报错的状态码
                print(f"\033[41m{url}:status code: {resp.status_code}\033[0m")       #\033[41m 代表红色     \033[32m 代表绿色
        except:  
            pass #出现异常的情况下跳过

def domain_check(site,max_workers):       #跑字典对拼接的子域名进行访问测试,并配置线程池,默认线程值为10
    with open('./domain.txt') as file:
        domains=[f"http://{line.strip()}.{site}" for line in file]
    with ThreadPoolExecutor(max_workers=max_workers) as executor:  
        futures = {executor.submit(check_domain, domain): domain for domain in domains}  
        for future in as_completed(futures):  
            domain = futures[future]   
  
if __name__=='__main__':
    print(banner)
    default_domain="baidu.com"  #这边默认值配置为baidu.com
    target_domain = input("请输入要检查的域名(如baidu.com): ")  
    if target_domain:
        default_domain=target_domain
    num_threads_input = input("请输入线程数(默认为10): ")  
    max_workers = int(num_threads_input) if num_threads_input.isdigit() else 10  # 转换输入为整数,或默认为10  
    domain_check(default_domain,max_workers)

优化进阶思路:

1.尝试把输出的内容进行保存,都放在一个文件里

2.尝试基于该子域名的收集进行功能扩展

标签:__,domain,Python,workers,url,域名,自动化,033
From: https://blog.csdn.net/weixin_60830484/article/details/136914963

相关文章

  • 解决[TSP旅行商]问题,请列出[4]个可以用[Python]编程的优化路径算法,展开写出这[4]个算
    TSP(旅行商问题)是一个经典的组合优化问题,其目标是找到访问所有城市并返回起点的最短可能路线。在Python中,有多种算法可以用来解决TSP问题,以下是四个常用的算法及其编程难度级别、时间复杂度和所需的库:回溯法(Backtracking)编程难度级别:中等时间复杂度:指数级,因为需要遍历所有......
  • 如何在极狐GitLab Runner 添加信任缓存域名证书
    本文作者:徐晓伟GitLab是一个全球知名的一体化DevOps平台,很多人都通过私有化部署GitLab来进行源代码托管。极狐GitLab是GitLab在中国的发行版,专门为中国程序员服务。可以一键式部署极狐GitLab。问题参见:场景是极狐GitLabRunner添加MinIO域名host的时候却无法验证......
  • python操作kafka
    目录一、python操作kafka1.python使用kafka生产者2.python使用kafka消费者3.使用docker中的kafka二、python操作kafka细节2.1生产者demo2.2消费者demo2.3消费者(消费群组)2.4消费者(读取目前最早可读的消息)2.5消费者(手动设置偏移量)2.6消费者(订阅多个主题)......
  • python 多进程并发:生产者+多消费者模式
    多任务场景中,为了节省大量子任务串行执行的耗时,通常采用并发方式充分利用cpu和内存来节省整体任务运行时间。对于多任务并发,常见的做法自然是抽象出功能函数,借助multiprocess类在主进程中并发出多个子进程,或者构建进程池,将任务构造好后丢入进程池中来实现并发。这种方式对于......
  • python 异常捕获、断言(assert 、finally) 与日志(loguru.logger)
    异常捕获常见的异常类型代码执行顺序从上到下依次运行的,如果出错了,后面的代码不会出错。--所以要对异常做处理。常见的异常的类型,不需要记;平时写代码的时候经常会报错,积累常见错误,排查问题。常见异常的报错的类型:NameError,IndexError,KeyError,ValueError,ZeroDivisionE......
  • python 之 垃圾回收机制(Garbage Collector,简称 GC)
    垃圾回收机制有三种,主要采用引用计数机制为主,标记-清除和分代回收机制为辅的策略。其中,标记-清除机制用来解决计数引用带来的循环引用而无法释放内存的问题,分代回收机制是为提升垃圾回收的效率。1.引用计数:Python中的每个对象都有一个引用计数,每当对象被引用时,其引用......
  • python 函数(解包、互相调用、作用域、函数的封装、内置函数:eval()、zip()、open())
    函数解包"""1、函数的注释:参数和返回值在注释里可以自动添加显示,只需手动加说明。2、函数的解包【拆包】:函数的参数要传递数据有多个值的时候,中间步骤拿到数据保存在元组或者列表或者字典里。-传递参数的时候加一个*或者**解包-一次拿到元组列表字典的......
  • 如何给极狐GitLab Runner 添加 MinIO 域名 host
    本篇作者:徐晓峰GitLab是一个全球知名的一体化DevOps平台,很多人都通过私有化部署GitLab来进行源代码托管。极狐GitLab是GitLab在中国的发行版,专门为中国程序员服务。可以一键式部署极狐GitLab。本篇文章介绍了如何自定义极狐GitlabRunner使用的MinIO域名host问......
  • 身份证ocr,python身份证识别ocr接口代码,实名认证接口
    基于文字识别技术产物的身份证识别接口现已成熟,通过手机、电脑或者摄像头终端设备拍照或者上传身份证图片即可实现身份证照片上文字的识别,从而提取到身份证信息。翔云除了提供身份证识别接口外,还完善了实名认证接口方案,搭配翔云身份证实名认证接口可谓是效率翻倍。身份证......
  • 基于Python3的数据结构与算法 - 17 哈希表
    一、哈希表哈希表是一个通过哈希函数来计算数据存储位置的数据结构,通常支持如下操作:insert(key,value):插入键值对(key,value)。get(key):如果存在键值对为key的键值对则返回其value,否则返回空值。delete(key):删除键为key的键值对。1.直接寻址法当关键字的全域U比较小......