Python实现目录爆破

 

import urllib3
import queue
import threading
import sys
import time

def main(url, threadNum):
    #以队列的形式获取爆破路径
    pathQueue = getPath(url)

    #通过多线程进行爆破
    threads = []
    for i in range(threadNum):
        t = threading.Thread(target=blastingUrl, args=(pathQueue,))
        threads.append(t)
        t.start()
    #join([timeout])等到线程终止。这将阻塞调用线程,直到调用join()方法的线程终止 - 通常或通过未处理的异常 - 或直到发生可选的超时。
    #多线程多join的情况下,依次执行各线程的join方法,前头一个结束了才能执行后面一个
    for t in threads:
        t.join()

#爆破目录地址
def blastingUrl(pathQueue):
    while not pathQueue.empty():
        try:
            url = pathQueue.get()
            http = urllib3.PoolManager()
            response = http.request("GET", url)

            #输出能访问到的目录
            if response.status == 200:
                print("[%d] => %s" %(response.status, url))
        except:
            pass
    else:
        sys.exit()

#把目录字典添加到队列中去
def getPath(url,file="D://PHP.txt"):
    pathQueue = queue.Queue()
    f = open(file, "r", encoding="gbk")
    for i in f.readlines():
        path = url + i.strip()
        pathQueue.put(path)
    f.close()
    return pathQueue

if __name__ == "__main__":
    url = input("请输入爆破地址:")
    threadNum = input("请输入爆破线程数:")
    sTime = time.time()
    main(url,int(threadNum))
    eTime = time.time()
    print("共耗时%.2f s" % (eTime - sTime))

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值