使用python编写简单的目录扫描

第一个

地址:

http://www.miaosj.cn/

思路:

"""
通过分析判断网页返回的状态码来表明目录是否存在
1.访问网页
2.查看状态码
3.判断网页是否存在
"""

代码:

import requests

url = "http://www.miaosj.cn/"
headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36"
    }
print("开始( ̄_, ̄ )执行......")
#定义个file函数,参数为file1
def file(file1):
	#打开文件的值(utf-8的格式)用行展示
    f = open(file1,encoding='utf-8').readlines()
    #返回个f
    return f
#定义个run函数
def run():
	#赋值给run
    run = file("2.txt")
    #循环run的值到i
    for i in run:
    	#去掉换行
        cf = i.strip("\n")
        #拼接网址和目录名称
        URL = url + str(cf)
        #获得状态码
        response = requests.get(URL,headers=headers)
        #判断状态码是否为200
        if response.status_code == 200:
            print("[+]" + str(cf) + "存在")
            #将打印的值到传输到f
            print("[+]" + str(cf) + "存在",file=f)
        else:
            print("[+]" + str(cf) + "不存在")
    return ""
#创建写入1.txt
with open("1.txt",'w') as f:
	#调用run()函数并写入到f
    f.write(run())
    #关闭
    f.close()

第二个

#模块
import requests
import sys
#第一个参数
url = sys.argv[1]
#第二个
dic = sys.argv[2]
#打开文件
with open(dic,"r") as f:
	#单行输出
    for line in f.readlines():
        line = line.strip()
        r = requests.get(url + line)
        #判断返回码
        if r.status_code == 200:
            print("url:" + r.url)

第三个多线程

import getopt
import sys
import math
import threading
import requests
#帮助
def banner():
    print("*"*50)
    print("奥里给 v1.0")
    print("*" * 50)
    print("this is the tool's usage")
    print("python 奥里给 v1.0 -u url -t thread -d dictionary")
#开始执行
def start():
    if len(sys.argv) == 7:
        opts, args = getopt.getopt(sys.argv[1:], "u:t:d:")
		#格式正确传参过去
        for k,v in opts:
            if k == "-u":
                url = v

            elif k == "-t":
                threads = v

            elif k == "-d":
                dic = v
        multi_scan(url,threads,dic)
    #不正确,提示
    else:
        banner()
        sys.exit()

def multi_scan(url,threads,dic):
    result_list = []
    threads_list = []
    #读取文件
    with open(dic,"r") as f:
        dic_list = f.readlines()
        if len(dic_list) % int(threads) == 0:
            result = len(dic_list) / int(threads)
        else:
            result = math.ceil(len(dic_list) / int(threads))
            
        print(result)
        i = 0
        temp_list = []
        for line in dic_list:
            i = i+1
            if i % result == 0:
                temp_list.append(line.strip())
                result_list.append(temp_list)
                temp_list = []
            else:
                temp_list.append(line.strip())
    #多线程
    for i in result_list:
        threads_list.append(threading.Thread(target=scan,args=(url,i)))
    for t in threads_list:
        t.start()
    print(result_list)
#判断是否存活
def scan(url,dic):
    for line in dic:
        r = requests.get(url + '/' + line)
        if r.status_code == 200:
            print(r.url + " "*15 + str(r.status_code))

start()
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值