信息收集与资产探活工具 httpx 保姆级使用教程
httpx 是一个由 ProjectDiscovery 团队开发的高效 HTTP 工具包,基于 retryablehttp 库构建,专为网络安全研究、资产发现和技术栈探测设计。它支持多线程操作、丰富的探测功能和灵活的输出格式。本教程将结合官方帮助文档(httpx.exe --help),详细讲解参数功能,并提供丰富的实战示例,帮助你从入门到精通。
1. 什么是 httpx?
httpx 是一个命令行工具,用于快速探测目标主机的 HTTP 服务。它可以返回状态码、标题、技术栈、服务器信息等,支持高级功能如截图、正则提取和条件过滤。无论是单个 URL 还是大规模 IP 段,httpx 都能高效处理,广泛应用于渗透测试和信息收集。
2. 安装与基本使用
2.1 安装
- Windows: 从 GitHub下载
httpx.exe。 - Linux/macOS: 使用
go install或预编译二进制文件。 - 更新: 运行
httpx -up更新到最新版本。
2.2 基本用法
httpx.exe [flags]
- 不带参数时,从标准输入(stdin)读取目标。
- 使用
flags指定输入、探测类型和输出格式。
2.3 示例:探测单个目标
httpx.exe -u "https://www.baidu.com" -sc -title
输出: [https://www.baidu.com] [200] [百度一下,你就知道]
3. 参数详解
httpx 参数众多,按功能分类如下,包含详细说明和使用场景。
3.1 输入参数 (INPUT)
指定探测目标的方式。
-l, -list string: 从文件读取目标列表,支持域名、IP 或 URL。- 示例:
httpx.exe -l targets.txt - 场景: 批量探测资产。
- 示例:
-rr, -request string: 使用包含原始 HTTP 请求的文件。- 示例:
httpx.exe -rr raw_request.txt - 场景: 测试特定请求。
- 示例:
-u, -target string[]: 直接指定目标,可多次使用。- 示例:
httpx.exe -u "https://example.com" -u "http://test.com" - 场景: 快速测试少量目标。
- 示例:
3.2 探测参数 (PROBES)
控制返回的响应信息。
-sc, -status-code: 显示状态码(如 200、404)。- 场景: 判断目标是否存活。
-cl, -content-length: 显示内容长度。- 场景: 分析响应大小。
-ct, -content-type: 显示内容类型(如text/html)。- 场景: 识别页面类型。
-title: 显示页面标题。- 场景: 快速了解页面内容。
-server, -web-server: 显示服务器名称(如nginx)。- 场景: 识别后端技术。
-td, -tech-detect: 检测技术栈(如 WordPress、Apache)。- 场景: 技术指纹识别。
-ip: 显示目标 IP。-cname: 显示 CNAME 记录。-favicon: 显示/favicon.ico的 MMH3 哈希。- 场景: 识别网站指纹。
-jarm: 显示 JARM 指纹。- 场景: TLS 服务指纹识别。
-rt, -response-time: 显示响应时间。- 场景: 性能分析。
- 示例:
输出:httpx.exe -u "https://www.baidu.com" -sc -title -server -td[https://www.baidu.com] [200] [百度一下,你就知道] [BFE] [tech: BFE]
3.3 无头浏览器参数 (HEADLESS)
处理需要渲染的页面。
-ss, -screenshot: 使用无头浏览器截图。- 场景: 验证页面内容。
-st, -screenshot-timeout value: 截图超时(默认 10 秒)。-srd, -store-response-dir string: 指定截图和响应保存目录。- 示例:
httpx.exe -u "https://example.com" -ss -srd "output"
3.4 匹配参数 (MATCHERS)
筛选符合条件的响应。
-mc, -match-code string: 匹配状态码。- 示例:
-mc 200,302只显示 200 或 302 的响应。
- 示例:
-ms, -match-string string[]: 匹配响应中的字符串。- 示例:
-ms "login"只显示含 “login” 的页面。
- 示例:
-mr, -match-regex string[]: 匹配正则表达式。- 示例:
-mr "root:[x0-9]:"匹配/etc/passwd内容。
- 示例:
-mrt, -match-response-time string: 匹配响应时间。- 示例:
-mrt '< 1'只显示响应小于 1 秒的结果。
- 示例:
3.5 提取参数 (EXTRACTOR)
从响应中提取数据。
-er, -extract-regex string[]: 使用正则提取。- 示例:
-er "[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}"提取邮件。
- 示例:
-ep, -extract-preset string[]: 使用预定义正则(如mail、url)。- 示例:
-ep url提取所有 URL。
- 示例:
3.6 过滤参数 (FILTERS)
排除不符合条件的响应。
-fc, -filter-code string: 过滤状态码。- 示例:
-fc 403,404排除 403 和 404。
- 示例:
-fs, -filter-string string[]: 过滤含特定字符串的响应。- 示例:
-fs "error"排除含 “error” 的页面。
- 示例:
-fep, -filter-error-page: 过滤错误页面(基于机器学习)。- 场景: 提高结果准确性。
3.7 速率限制参数 (RATE-LIMIT)
控制请求频率。
-t, -threads int: 线程数(默认 50)。- 场景: 提高探测速度。
-rl, -rate-limit int: 每秒最大请求数(默认 150)。- 场景: 避免触发防护。
- 示例:
httpx.exe -l hosts.txt -t 100 -rl 200
3.8 输出参数 (OUTPUT)
自定义输出格式。
-o, -output string: 保存到文件。-json: 输出 JSONL 格式。-sr, -store-response: 保存完整响应。-csv: 输出 CSV 格式。- 示例:
httpx.exe -l hosts.txt -json -o results.json
3.9 配置参数 (CONFIGURATIONS)
调整请求行为。
-H, -header string[]: 自定义 HTTP 头。- 示例:
-H "User-Agent: Mozilla/5.0"
- 示例:
-fr, -follow-redirects: 跟随重定向。-p, -ports string[]: 指定端口。- 示例:
-p 80,443,8080
- 示例:
-path string: 指定路径。- 示例:
-path "/admin"
- 示例:
4. 实战应用
4.1 基本探测
探测目标的基本信息。
echo "www.baidu.com" | httpx -title -sc -td
输出: [http://www.baidu.com] [200] [百度一下,你就知道] [tech: BFE]
4.2 指定端口探测
探测特定端口的 HTTP 服务。
echo "www.baidu.com" | httpx -title -sc -td -p 80,443,8080 -probe
输出: 检查 80、443 和 8080 端口的响应。
4.3 C 段存活探测
扫描整个 C 段(/24)寻找存活主机。
echo "192.168.1.0/24" | httpx -silent
-silent: 静默模式,仅输出结果。- 输出: 存活主机的 URL。
4.4 Grafana 任意文件读取扫描
检测 Grafana 漏洞(路径穿越读取 /etc/passwd)。
httpx -l ip.txt -sc -path "/public/plugins/prometheus/../../../../../../../../../../../etc/passwd" -mc 200 -mr "root:x"
-path: 指定漏洞路径。-mc 200: 匹配状态码 200。-mr "root:x": 匹配响应中含root:x。- 输出: 存在漏洞的目标。
4.5 FUZZ 子域名
结合子域名字典进行探测。
wget -q -O - "https://raw.githubusercontent.com/weujieytt/SrcCommon/main/FUZZ/subnames.txt" | sed 's/FUZZ/baidu.com/g' | httpx -sc -title -location -t 100
wget下载字典,sed替换 FUZZ 为baidu.com。-t 100: 使用 100 线程加速。- 输出: 子域名的状态码、标题和重定向位置。
4.6 技术栈批量检测
扫描文件中的目标并识别技术栈。
httpx -l domains.txt -td -server -json -o tech.json
- 输出: JSON 格式的技术栈和服务器信息。
4.7 提取敏感信息
从响应中提取 URL。
httpx -l targets.txt -ep url -o urls.txt
- 输出: 提取的所有 URL 保存到
urls.txt。
4.8 结合截图验证
探测并保存页面截图。
httpx -l hosts.txt -ss -srd "screenshots" -title -sc
- 输出: 标题、状态码和截图文件。
5. 高级技巧
- 管道输入:
cat domains.txt | httpx -sc -title - 避免封禁:
httpx -l hosts.txt -t 20 -rl 50 -delay 500ms-delay 500ms: 每次请求间隔 500 毫秒。
- 自定义请求:
httpx -u "https://example.com" -H "Cookie: session=abc123" -body '{"test": "data"}' -x POST
总结
httpx 凭借其强大的功能和灵活性,成为网络安全领域的利器。本教程从参数讲解到实战应用,覆盖了从基础探测到漏洞扫描的多种场景。通过合理配置参数和结合其他工具,你可以充分发挥 httpx 的潜力,提升工作效率!
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐




所有评论(0)