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


前言

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


一、开端

1.简单描述

     最简单的目录扫描就是一个URL加上拼接的路径,然后去做存活请求判断,如果返回状态码为200则代表存活,否则就pass。

2.逻辑编写

     用户输入URL
     然后根据用户输入的URL拼接目录字典去做请求访问
     根据响应包的状态码判断是否存在此目录
     打印输出

3.结果实现

     创建个空白文件夹建几个文件,然后用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)

if __name__ == '__main__':
    scan()

二、总结笔记

     1)选择with…as… 是因为在读取完文件时会自动关闭。

#使用 with...as... 将文件取别名,open()为了打开文件,r参数为只读
#使用 with...as... 的好处在于,在对文件进行操作后,会自动关闭文件
with open("shell.txt","r") as f:
	f.readline()  #读取一行
	f.readlines() #全部读取
	f.read(10)    #读取指定字节

     2)python文件open()函数参数:r和rb比较

读取文本文件时,不要使用rb模式打开文件,而应该仅使用r模式。
推荐使用r打开文本文件。因为使用此模式打开文本文件时,python会默认为我们做一些处理,
比如:假设在windows下,将本来应该读入的换行符\r\n处理成\n,方便我们处理。
(值得一提的是,当你将\n写入文件时,python也会默认将其替换成\r\n,如果你是win系统的话)
补充:其实是启用了通用换行符支持(UNS),它默认开启。
使用rb的话,则python不会对文本文件预处理了,你读入的\r\n依然是\r\n.
t是文本模式
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值