dirsearch 命令行选项详解:基于官方教程
基于 GitHub 官方仓库 的最新文档,以下是 dirsearch 全部参数的完整详解。
一、安装与基础
环境要求:Python 3.9+
# 推荐方式 - git 克隆gitclone https://github.com/maurosoria/dirsearch.git--depth1cddirsearch pip3install-rrequirements.txt# 或 PyPI 安装pip3installdirsearch# 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 |
数据库输出格式:
# MySQLdirsearch-omysql://user:pass@localhost:3306/dirsearch_db--formatmysql# PostgreSQLdirsearch-opostgresql://user:pass@localhost:5432/dirsearch_db--formatpostgresql十、配置文件(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-uhttps://target.com-ephp,html,js# 2. 批量扫描 + 递归 + 线程控制dirsearch-lurls.txt-ephp-r-t30# 3. 内网CIDR + 快速模式dirsearch--cidr192.168.1.0/24--timeout3--retries1-t50# 4. 带Cookie的后台扫描dirsearch-uhttps://admin.target.com-ephp--cookie"SESSION=xxx"-H"X-Requested-With: XMLHttpRequest"# 5. WAF绕过:随机UA + 代理池 + 延迟dirsearch-uhttps://target.com-ephp --random-agent --proxies-file proxies.txt--delay1--max-rate50# 6. 备份文件专项扫描dirsearch-uhttps://target.com-ezip,tar,gz,bak,sql--suffixes~,.bak,.old--prefixes.# 7. 仅扫目录(不扫文件)dirsearch-uhttps://target.com --remove-extensions--suffixes/# 8. 原始请求导入(复杂认证场景)dirsearch--rawrequest.txt--schemehttps-ephp# 9. 断点续扫dirsearch--sessionsessions/scan_001# 10. 结果直接入库dirsearch-uhttps://target.com-ephp--formatjson-oresult.json# 11. 安静模式 + 完整URL + 过滤404dirsearch-uhttps://target.com-ephp-q--full-url-x404# 12. 爬虫联动模式dirsearch-uhttps://target.com-ephp--crawl-r# 13. 排除特定大小和文本的误报dirsearch-uhttps://target.com-ephp --exclude-sizes 0B,4KB --exclude-text"404 Not Found"# 14. 使用内置分类字典(配置文件+备份)dirsearch-uhttps://target.com --wordlist-categories conf,backups# 15. 异步高速扫描dirsearch-uhttps://target.com-ephp--async-t100十二、会话管理
扫描过程中按CTRL+C可暂停,选择保存会话后,后续通过--session恢复:
# 保存会话(扫描时按CTRL+C,选择save并命名)dirsearch-uhttps://target.com-ephp# [CTRL+C] → 输入会话名: my_scan# 列出所有会话dirsearch --list-sessions# 恢复会话dirsearch--sessionsessions/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
