基于 GitHub 官方仓库 的最新文档,以下是 dirsearch 全部参数的完整详解。
一、安装与基础
环境要求: Python 3.9+
# 推荐方式 - git 克隆
git clone https://github.com/maurosoria/dirsearch.git --depth 1
cd dirsearch
pip3 install -r requirements.txt
# 或 PyPI 安装
pip3 install dirsearch
# Kali Linux(已弃用 apt 方式,推荐 git)
独立二进制文件(无需 Python):
- Linux:
dirsearch-linux-amd64 - Windows:
dirsearch-windows-x64.exe - macOS Intel:
dirsearch-macos-intel - macOS Apple Silicon:
dirsearch-macos-silicon
二、必选目标参数(Mandatory)
启动扫描必须指定目标,以下任选其一:
| 参数 | 说明 | 用法示例 |
|---|---|---|
-u URL / --url=URL |
指定单个或多个目标URL,支持多次叠加 | dirsearch -u https://test.com 或 -u https://a.com -u https://b.com |
-l PATH / --urls-file=PATH |
从本地文件加载URL列表,每行一个URL | dirsearch -l targets.txt |
--stdin |
从标准输入读取URL,无需保存文件 | cat urls.txt | dirsearch --stdin |
--cidr=CIDR |
CIDR网段扫描,自动探测Web服务主机 | dirsearch --cidr 192.168.1.0/24 |
--raw=PATH |
加载原始HTTP请求报文文件 | dirsearch --raw request.txt --scheme https |
--nmap-report=PATH |
导入Nmap报告(需带 -sV 参数) |
dirsearch --nmap-report nmap.xml |
-s SESSION_FILE / --session=SESSION_FILE |
加载已保存的会话,支持断点续扫 | dirsearch --session sessions/scan_001 |
--config=PATH |
加载自定义配置文件 | dirsearch --config waf_bypass.ini |
关键说明:
--raw必须配合--scheme指定 http/https,因为原始请求中没有协议信息--nmap-report要求 Nmap 扫描时加-sV版本探测,否则无法正确解析 Web 端口- 会话文件采用 JSON 格式存储,旧版
.pickle/.pkl已不再支持
三、字典配置参数(Dictionary Settings)
控制字典加载、扩展名规则、前后缀、大小写转换:
| 参数 | 说明 | 用法示例 |
|---|---|---|
-w WORDLISTS / --wordlists=WORDLISTS |
自定义字典文件/目录,多字典用逗号分隔 | dirsearch -w /usr/share/dirb/big.txt,custom.txt |
--wordlist-categories=CATEGORIES |
调用内置分类字典:common, conf, vcs, backups, db, logs, keys, web |
dirsearch --wordlist-categories common,conf(all 加载全部) |
-e EXTENSIONS / --extensions=EXTENSIONS |
指定爆破扩展名,逗号分隔 | dirsearch -e php,asp,jsp,aspx,html,txt,bak |
-f / --force-extensions |
强制将扩展名追加到每条字典末尾(默认只替换 %EXT% 占位符) |
dirsearch -e php -f |
-O / --overwrite-extensions |
用指定扩展名覆盖字典原有后缀 | dirsearch -e jsp -O |
--exclude-extensions=EXTENSIONS |
全局排除指定扩展名 | dirsearch --exclude-extensions jsp,asp |
--remove-extensions |
移除所有路径中的扩展名(如 admin.php → admin) |
dirsearch --remove-extensions |
--prefixes=PREFIXES |
给所有条目添加前缀,逗号分隔 | dirsearch --prefixes ./,api/,admin/ |
--suffixes=SUFFIXES |
给文件类路径添加后缀(自动忽略目录) | dirsearch --suffixes ~,.bak,.zip,.sql |
-U / --uppercase |
全部转为大写 | dirsearch -U |
-L / --lowercase |
全部转为小写 | dirsearch -L |
-C / --capital |
首字母大写 | dirsearch -C |
字典扩展名核心逻辑:
默认模式(仅替换 %EXT%):
字典: index.%EXT% → 生成: index.php, index.html
字典: admin → 生成: admin(无扩展名)
强制模式 -f(追加扩展名):
字典: admin → 生成: admin, admin.php, admin.html, admin/
覆盖模式 -O(替换已有扩展名):
字典: login.html → 生成: login.jsp, login.jspa
四、通用扫描参数(General Settings)
| 参数 | 说明 | 默认值 | 用法示例 |
|---|---|---|---|
-t THREADS / --threads=THREADS |
并发线程数 | 25 | dirsearch -t 50(内网)/ -t 10(有WAF) |
--async |
启用异步模式(协程替代线程) | False | dirsearch --async |
--list-sessions |
列出所有可恢复的会话 | - | dirsearch --list-sessions |
--sessions-dir=PATH |
自定义会话搜索目录 | - | dirsearch --sessions-dir /tmp/sessions |
-r / --recursive |
递归扫描(仅对目录路径递归) | False | dirsearch -r |
--deep-recursive |
深度递归(如 api/users 会回头扫 api/) |
False | dirsearch --deep-recursive |
--force-recursive |
强制递归(对文件也递归,慎用) | False | dirsearch --force-recursive |
-R DEPTH / --max-recursion-depth=DEPTH |
最大递归层级,0为不限制 | 0 | dirsearch -r -R 3 |
--recursion-status=CODES |
允许触发递归的状态码 | 200-399,401,403 | dirsearch --recursion-status 200,301 |
--subdirs=SUBDIRS |
扫描指定子目录 | - | dirsearch --subdirs /,admin/,api/ |
--exclude-subdirs=SUBDIRS |
递归时排除指定子目录 | - | dirsearch --exclude-subdirs image/,css/ |
-i CODES / --include-status=CODES |
白名单状态码,支持范围 | - | dirsearch -i 200,401,403,300-399 |
-x CODES / --exclude-status=CODES |
黑名单状态码,支持范围 | - | dirsearch -x 404,500-599 |
--exclude-sizes=SIZES |
按响应大小排除(如 0B,4KB) |
- | dirsearch --exclude-sizes 0B,2KB |
--exclude-text=TEXTS |
页面包含指定文本则过滤,可多次使用 | - | dirsearch --exclude-text "Not Found" |
--exclude-regex=REGEX |
正则匹配排除响应内容 | - | dirsearch --exclude-regex "^Error$" |
--exclude-redirect=STRING |
匹配重定向URL文本/正则过滤 | - | dirsearch --exclude-redirect "/login.html" |
--exclude-response=PATH |
加载本地404模板,智能比对过滤 | - | dirsearch --exclude-response 404.html |
--skip-on-status=CODES |
遇到指定状态码则跳过当前目标 | - | dirsearch --skip-on-status 429 |
--min-response-size=LENGTH |
最小响应长度过滤 | - | dirsearch --min-response-size 100 |
--max-response-size=LENGTH |
最大响应长度过滤 | - | dirsearch --max-response-size 50000 |
--max-time=SECONDS |
全局扫描最大运行时间 | 0(无限制) | dirsearch --max-time 3600 |
--exit-on-error |
遇到错误立即退出 | False | dirsearch --exit-on-error |
线程建议:
- 普通外网:15-30
- 有WAF防护:5-10
- 内网无限制:50+
五、HTTP请求参数(Request Settings)
| 参数 | 说明 | 用法示例 |
|---|---|---|
-m METHOD / --http-method=METHOD |
HTTP方法,默认GET | dirsearch -m POST |
-d DATA / --data=DATA |
POST请求数据 | dirsearch -m POST -d "user=admin&pass=123" |
--data-file=PATH |
从文件加载请求体数据 | dirsearch --data-file post_data.txt |
-H HEADERS / --header=HEADERS |
自定义请求头,可多次叠加 | dirsearch -H "X-Auth: token" -H "Referer: https://site.com" |
--headers-file=PATH |
从文件批量加载请求头 | dirsearch --headers-file headers.txt |
-F / --follow-redirects |
跟随301/302重定向 | dirsearch -F |
--random-agent |
每次请求随机User-Agent | dirsearch --random-agent |
--auth=CREDENTIAL |
认证凭据 | dirsearch --auth admin:password |
--auth-type=TYPE |
认证类型:basic, digest, bearer, ntlm, jwt |
dirsearch --auth "BearerToken" --auth-type bearer |
--cert-file=PATH |
客户端证书文件 | dirsearch --cert-file client.crt |
--key-file=PATH |
客户端证书私钥(未加密) | dirsearch --key-file client.key |
--user-agent=USER_AGENT |
固定自定义UA | dirsearch --user-agent "Mozilla/5.0..." |
--cookie=COOKIE |
携带Cookie扫描 | dirsearch --cookie "SESSIONID=abc123" |
六、网络连接参数(Connection Settings)
| 参数 | 说明 | 默认值 | 用法示例 |
|---|---|---|---|
--timeout=TIMEOUT |
单请求连接超时(秒) | 7.5 | dirsearch --timeout 15 |
--delay=DELAY |
请求间固定延迟(秒) | 0 | dirsearch --delay 0.5 |
-p PROXY / --proxy=PROXY |
HTTP/SOCKS代理,可多次叠加 | - | dirsearch -p 127.0.0.1:8080 或 -p socks5://10.0.0.1:1080 |
--proxies-file=PATH |
代理池文件,自动轮换 | - | dirsearch --proxies-file proxies.txt |
--proxy-auth=CREDENTIAL |
代理认证账号密码 | - | dirsearch --proxy-auth user:pass |
--replay-proxy=PROXY |
仅对命中路径通过代理重放 | - | dirsearch --replay-proxy 127.0.0.1:8080 |
--tor |
使用Tor匿名网络 | - | dirsearch --tor |
--scheme=SCHEME |
强制指定协议(配合–raw使用) | auto-detect | dirsearch --raw req.txt --scheme https |
--max-rate=RATE |
每秒最大请求数限制 | 0 | dirsearch --max-rate 100 |
--retries=RETRIES |
失败请求重试次数 | 1 | dirsearch --retries 3 |
--ip=IP |
手动指定目标服务器IP | - | dirsearch --ip 192.168.1.100 |
--interface=NETWORK_INTERFACE |
指定本机网卡发包 | - | dirsearch --interface eth1 |
七、高级设置(Advanced Settings)
| 参数 | 说明 | 用法 |
|---|---|---|
--crawl |
开启页面爬虫,自动抓取响应中的新链接加入扫描 | dirsearch --crawl |
八、视图参数(View Settings)
| 参数 | 说明 | 用法 |
|---|---|---|
--full-url |
输出完整绝对URL(安静模式自动启用) | dirsearch --full-url |
--redirects-history |
展示完整重定向链路 | dirsearch --redirects-history |
--no-color |
关闭终端彩色输出 | dirsearch --no-color |
-q / --quiet-mode |
安静模式,只输出有效结果 | dirsearch -q |
--disable-cli |
完全关闭终端输出,只写入文件 | dirsearch --disable-cli |
-v / --verbose |
详细模式,显示响应时间、编码、内容类型 | dirsearch -v |
九、输出参数(Output Settings)
| 参数 | 说明 | 用法 |
|---|---|---|
-o PATH/URL / --output=PATH/URL |
输出文件路径或数据库URL | dirsearch -o report.html |
--format=FORMAT |
报告格式:simple, plain, json, xml, md, csv, html, sqlite, mysql, postgresql |
dirsearch --format json -o result.json |
--log=PATH |
保存完整扫描日志 | dirsearch --log scan.log |
数据库输出格式:
# MySQL
dirsearch -o mysql://user:pass@localhost:3306/dirsearch_db --format mysql
# PostgreSQL
dirsearch -o postgresql://user:pass@localhost:5432/dirsearch_db --format postgresql
十、配置文件(config.ini)
默认配置文件路径:dirsearch/config.ini,可通过 --config 或环境变量 DIRSEARCH_CONFIG 指定。
[general]
threads = 25
async = False
recursive = False
deep-recursive = False
force-recursive = False
recursion-status = 200-399,401,403
max-recursion-depth = 0
random-user-agents = False
max-time = 0
exit-on-error = False
[dictionary]
default-extensions = php,aspx,jsp,html,js
force-extensions = False
overwrite-extensions = False
lowercase = False
uppercase = False
capitalization = False
[request]
http-method = get
follow-redirects = False
[connection]
timeout = 7.5
delay = 0
max-rate = 0
max-retries = 1
[advanced]
crawl = False
[view]
full-url = False
quiet-mode = False
color = True
[output]
report-format = plain
autosave-report = True
autosave-report-folder = reports/
优先级: 命令行参数 > 自定义 config > 系统默认 config
十一、实战命令组合示例
# 1. 基础单目标扫描
dirsearch -u https://target.com -e php,html,js
# 2. 批量扫描 + 递归 + 线程控制
dirsearch -l urls.txt -e php -r -t 30
# 3. 内网CIDR + 快速模式
dirsearch --cidr 192.168.1.0/24 --timeout 3 --retries 1 -t 50
# 4. 带Cookie的后台扫描
dirsearch -u https://admin.target.com -e php --cookie "SESSION=xxx" -H "X-Requested-With: XMLHttpRequest"
# 5. WAF绕过:随机UA + 代理池 + 延迟
dirsearch -u https://target.com -e php --random-agent --proxies-file proxies.txt --delay 1 --max-rate 50
# 6. 备份文件专项扫描
dirsearch -u https://target.com -e zip,tar,gz,bak,sql --suffixes ~,.bak,.old --prefixes .
# 7. 仅扫目录(不扫文件)
dirsearch -u https://target.com --remove-extensions --suffixes /
# 8. 原始请求导入(复杂认证场景)
dirsearch --raw request.txt --scheme https -e php
# 9. 断点续扫
dirsearch --session sessions/scan_001
# 10. 结果直接入库
dirsearch -u https://target.com -e php --format json -o result.json
# 11. 安静模式 + 完整URL + 过滤404
dirsearch -u https://target.com -e php -q --full-url -x 404
# 12. 爬虫联动模式
dirsearch -u https://target.com -e php --crawl -r
# 13. 排除特定大小和文本的误报
dirsearch -u https://target.com -e php --exclude-sizes 0B,4KB --exclude-text "404 Not Found"
# 14. 使用内置分类字典(配置文件+备份)
dirsearch -u https://target.com --wordlist-categories conf,backups
# 15. 异步高速扫描
dirsearch -u https://target.com -e php --async -t 100
十二、会话管理
扫描过程中按 CTRL+C 可暂停,选择保存会话后,后续通过 --session 恢复:
# 保存会话(扫描时按CTRL+C,选择save并命名)
dirsearch -u https://target.com -e php
# [CTRL+C] → 输入会话名: my_scan
# 列出所有会话
dirsearch --list-sessions
# 恢复会话
dirsearch --session sessions/my_scan
会话存储位置:
- 源码安装:
<dirsearch>/sessions/ - 独立二进制:
$HOME/.dirsearch/sessions/
十三、官方 Tips(实用技巧)
- 请求限制绕过: 使用
--proxies-file随机轮换代理 - 找配置文件/备份: 组合
--suffixes ~和--prefixes . - 仅扫目录:
--remove-extensions+--suffixes / - CIDR扫描降噪: 组合
--cidr,-F,-q减少噪音 - 避免429洪水:
--skip-on-status 429遇到限流自动跳过目标 - 大文件拖慢扫描: 改用
-m HEAD代替 GET 方法 - CIDR扫描太慢: 减小超时和重试
--timeout 3 --retries 1
原文 https://blog.csdn.net/2301_79518550/article/details/160923008