目录扫描,主要用于探测目标服务器或网站上的隐藏目录和文件,下面开始展示具体操作步骤啦!
确保安装python环境
前面文章有好几篇关于python的安装步骤及其环境的配置,这里我就不多讲咯
官网下载地址
https://www.python.org/
安装时记得勾选“Add Python to PATH”。
win+R键,cmd检测一下它的版本,出现了版本号就是安装成功啦
C:\Users\HUAWEI>python --versionPython 3.13.3
确保安装了Git(这是为了后面克隆字典文件做准备)
Windows:
打开浏览器,访问网址:
https://git-scm.com/downloads
2.安装完成后,打开命令行(Win+R → 输入 cmd),输入:
git --version
✅ 如果显示版本号(如 git version 2.49.0),说明安装成功。
创建目标文件夹
目的:
为了统一管理代码和资源,避免文件混乱。
在桌面创建一个名为 dir_scanner_gui 的文件夹:
桌面/└── dir_scanner_gui/
获取字典文件
字典是扫描的“路径列表”,比如 /admin, /login 等。扫描工具会读取它逐一尝试请求。
1.从GitHub 克隆 SecLists 字典库
git clone https://github.com/ danielmiessler/SecLists.git
2.找到常用字典如common.txt,把它复制到 dir_scanner_gui/ 文件夹里面去,并改名字,最后dict.txt 就是你要在代码中用到的字典文件。
作用:这将是你程序中使用的扫描目标路径列表。
Copy-Item"C:/Users/HUAWEI/Desktop/1/SecLists/Discovery/Web-Content/common.txt""C:\Users\HUAWEI\Desktop\dir_scanner_gui\dict.txt"
编写扫描工具程序
安装依赖模块(如requests)
requests 是 Python 用于发起 HTTP 请求的库,是扫描网站目录的核心。
你需要 requests(发起 HTTP 请求)和 tkinter(图形界面)。
pip install requests# tkinter 默认内置于 Python 中,无需额外安装
到这里就已经准备就绪
编写核心扫描逻辑,创建GUI界面程序
作用:
实现对指定网站进行路径尝试,读取 dict.txt 中的路径逐个请求。
scanner.py:
让用户通过图形界面输入 URL、点击按钮开始扫描,并看到结果输出,提升用户体验。
下面这是一个添加多线程扫描,停止扫描按钮,扫描进度条, 扫描结果导出为 TXT 文件的按钮的脚本文件
下面这个脚本是主包利用ai给的基础代码,加上给ai说需求添加各种命令,最后得来的完整的目录扫描脚本
import threadingimport tkinter as tkfrom tkinter import messagebox, filedialog, ttkimport requestsimport os# 全局变量控制扫描状态stop_flag = Falsedef do_scan(target_url, result_box, progress_bar, start_button, stop_button):global stop_flagstop_flag = Falsedict_path = "dict.txt"ifnot os.path.exists(dict_path):messagebox.showerror("错误", f"未找到字典文件 {dict_path}")returntry:with open(dict_path, "r", encoding="utf-8") as f:paths = f.read().splitlines()except Exception as e:messagebox.showerror("错误", f"读取字典文件失败: {e}")returnresult_box.delete("1.0", tk.END)total = len(paths)if total == 0:messagebox.showinfo("提示", "字典文件为空")returnprogress_bar["maximum"] = totalprogress_bar["value"] = 0for i, path in enumerate(paths, 1):if stop_flag:result_box.insert(tk.END, "\n扫描已停止\n")breakurl = f"{target_url.rstrip('/')}/{path.strip()}"try:r = requests.get(url, timeout=5)status = r.status_coderesult_box.insert(tk.END, f"[{status}] {url}\n")except requests.RequestException as e:result_box.insert(tk.END, f"[请求失败] {url} - {str(e)}\n")continueprogress_bar["value"] = iprogress_bar.update_idletasks()start_button.config(state=tk.NORMAL)stop_button.config(state=tk.DISABLED)def scan():target_url = entry.get().strip()ifnot target_url.startswith(("http://", "https://")):messagebox.showerror("错误", "请输入合法的URL(例如:http://example.com)")returnstart_button.config(state=tk.DISABLED)stop_button.config(state=tk.NORMAL)threading.Thread(target=do_scan, args=(target_url, result_box, progress_bar, start_button, stop_button), daemon=True).start()def stop_scan():global stop_flagstop_flag = Truedef export_results():file_path = filedialog.asksaveasfilename(defaultextension=".txt", filetypes=[("Text Files", "*.txt")])if file_path:try:with open(file_path, "w", encoding="utf-8") as f:f.write(result_box.get("1.0", tk.END))messagebox.showinfo("导出成功", f"结果已保存到 {file_path}")except Exception as e:messagebox.showerror("错误", f"保存文件失败: {e}")# GUI 初始化app = tk.Tk()app.title("目录扫描工具")app.geometry("700x500")tk.Label(app, text="目标网址:").pack()entry = tk.Entry(app, width=80)entry.pack(pady=5)btn_frame = tk.Frame(app)btn_frame.pack(pady=10)start_button = tk.Button(btn_frame, text="开始扫描", command=scan)start_button.pack(side=tk.LEFT, padx=5)stop_button = tk.Button(btn_frame, text="停止扫描", command=stop_scan, state=tk.DISABLED)stop_button.pack(side=tk.LEFT, padx=5)export_button = tk.Button(btn_frame, text="导出结果", command=export_results)export_button.pack(side=tk.LEFT, padx=5)progress_bar = ttk.Progressbar(app, orient="horizontal", length=600, mode="determinate")progress_bar.pack(pady=5)result_box = tk.Text(app, wrap="none")result_box.pack(expand=True, fill="both", padx=10, pady=10)app.mainloop()
下面这是脚本中出现的比较关键的部分解释
部分 作用tkinter 构建图形用户界面requests 向目标网站发起目录请求entry.get() 获取用户输入的目标网址dict.txt 读取字典中的目录requests.get(url) 对每个路径进行访问测试Text显示框 显示成功的目录(状态码为200
到这里,脚本也已经知道编写进去了,就剩扫描咯
利用目录扫描工具
http://testphp.vulnweb.com
是一个合法的测试靶场网站,专门为学习网站安全、测试扫描工具设计。
你可以放心对它进行目录扫描测试,而不会涉及非法行为。
扫描结果如下:
最后是扫描出的目标网站的响应情况状态码的解释
okok,那今天的目录扫描的工具分享到这里就结束啦,我们下下下~期再见!