Python工具开发学习系列——目录扫描(二)


前言

      一个用Python编写的目录扫描小工具的编写学习过程记录。


一、改变

1.简单描述

     想增加多域名文件目录扫描。失败了,还需要增加多线程队列等。

2.逻辑编写

     用户输入文件。
     提取出用户输入文件中的域名URL和目录字典逐一去拼接请求访问。
     根据响应包的状态码判断是否存在此目录。
     打印输出。

3.结果实现

     在当前文件夹中,新建一个url.txt存放域名和dir.txt目录字典文件。然后用python开启HTTP服务,自己扫自己。
在这里插入图片描述

4.代码部分

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# author: Mauro_K

import requests

def scan():
    #导入字典文件,url和目录拼接,发起HTTP请求,用过响应码判断目录是否存在
    headers = {
    
    
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:105.0) Gecko/20100101 Firefox/105.0"
    }

    url = input('请输入需要目录爆破的URL:').strip()
    # 打开当前目录下的dir.txt字典文件,并遍历读取所有行然后返回一个列表。
    with open('./dir.txt','rt',encoding='utf-8') as f:
        m = f.readlines()

        # 用for循环使url拼接dir.txt中的内容 然后请求访问后判断状态码是否是200
        for i in m:
            Url = url + i.strip()
            response = requests.get(Url,headers=headers, timeout=1)
            try:
                if response.status_code == 200:
                    print('[+]存在目录:' + Url)
                else:
                    pass
            except Exception as e:
                print(e)

def scand():
    headers = {
    
    
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:105.0) Gecko/20100101 Firefox/105.0"
    }
    # url文件存放的路径
    pwd = input('请输入文件路径:').strip()
    # 打开用户输入的文本,遍历读取所有行然后返回一个列表。
    with open(pwd, 'rt', encoding='utf-8') as f:
        m = f.readlines()
        # 遍历文件中的url
        for i in m:
            # 打开当前目录下的dir.txt字典文件,遍历读取所有行然后返回一个列表。
            with open('./dir.txt', 'rt', encoding='utf-8') as f:
                j = f.readlines()
                # 对用户输入的url文件中的所有URL 去逐一拼接字典文件中的目录
                for h in j:
                    Url = i.strip() + h.strip()
                    response = requests.get(Url, headers=headers, timeout=1)
                    try:
                        if response.status_code == 200:
                            print('[+]存在目录:' + Url)
                        else:
                            pass
                    except Exception as e:
                        print(e)


def dirScan():
    print('======================================================')
    print('单个域名爆破请选择1:')
    print('多个域名爆破请选择2:')
    print('======================================================')
    t = input('请输入扫描模式:').strip()
    if t == '1':
        scan()
    elif t == '2':
        scand()
    else:
        print('参数错误!')


if __name__ == '__main__':
    dirScan()

二、总结笔记

     1)遍历URL和目录字典后,二者结合拼接去做http请求时要先把二者用strip()函数处理一下,否则会造成做请求时URL结尾会有%0A造成请求失败。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_44029310/article/details/127351306
今日推荐