如果你平时做的是 Web 渗透、SRC 挖洞、红蓝对抗里的前期侦察,或者应急里的暴露面排查,那你大概率绕不开 httpx这款工具的。
我说的不是 Python 那个 HTTPX 客户端,而是 ProjectDiscovery 出的 httpx 。官方对它的定义很直接:
一个高性能、面向多探针的 HTTP 工具包支持高并发下对 URL、主机、CIDR 等目标做 HTTP 层探测,并尽量保证结果稳定性。它本质上不是漏洞扫描器,而是 Web 资产探测和结果归一化工具。
工具地址链接:
https://github.com/projectdiscovery/httpx
很多人第一次接触它,会把它理解成"批量访问网页的工具"。这么理解不算错,但太浅了。httpx 真正厉害的地方,不在于"能不能访问",而在于它能把一堆杂乱的目标,快速整理成一批有上下文、有指纹、有优先级的 Web 资产结果。
它不是用来打的,而是用来筛的
白帽子做信息收集时,经常会遇到一个问题:
目标很多,子域很多,端口很多,URL 更多,但真正值得深挖的点很少。
这个时候,httpx 的价值就出来了。
它可以在探测时顺手拿到很多 HTTP 层信息,比如:
状态码、标题、内容长度、重定向位置、响应时间、favicon hash、JARM、IP、CNAME、ASN、CDN/WAF、TLS 证书信息、CSP 信息、Web 技术栈等。
也就是说,httpx 干的不是"找到漏洞",而是先回答这些问题:
1.这个域名到底活不活;2.它跑的是不是 Web 服务;3.是 HTTP 还是 HTTPS;4.是不是走了 CDN;5.是不是同一套站群;6.标题像不像后台;7.favicon 能不能聚类;8.技术栈是不是 PHP/Java/Node/Go;9.证书里有没有暴露别的域名;10.某批资产里哪些优先级更高这一步做好了,后面的 Burp、Nuclei、Katana、手工验证,效率会完全不一样。
从技术上看,httpx 强在多探针并发探测
httpx 的核心思路不是只发一个请求拿个状态码,而是围绕目标执行多种 probe。官方文档里把 probe 描述成一组针对 Web 服务器、URL 或其他 HTTP 元素的检查项。
拿最常见的几类来说:
- 基础存活与协议识别
最基础的是判断目标是否可达。但它不是傻扫。默认情况下,如果 HTTPS 不通,它会回落到 HTTP;如果你想同时保留 HTTP 和 HTTPS 的结果,可以用 -no-fallback。官方还支持自定义端口和协议映射,比如把 443 按 HTTP 跑,或者把 8443 按 HTTPS 跑。
这在实战里很有用。因为很多历史资产、非标端口、运维临时服务,协议和端口经常不规范,单靠"443=HTTPS、80=HTTP"的思路很容易漏。
2. 页面特征提取
httpx 很适合做页面画像。状态码、标题、Server、content-type、响应时间、body 预览、内容长度、词数、行数,这些都是常见输出。
对测试人员来说,这些信息不是"展示用的",而是拿来做判断的:
-
302 到单点登录,说明可能是统一认证入口
-
401/403 的资产未必没价值,反而可能是后台
-
标题里带 test、dev、admin、swagger、api,优先级就上来了
-
一批长度、标题、hash 都高度相似的站,很可能是同一套模板页
3. 指纹与聚类能力
很多人喜欢它,就是因为它非常适合"站群归类"。
官方支持 -favicon、-jarm、-tech-detect、-asn、-cdn 等能力。-tech-detect 基于 Wappalyzer 数据做技术识别;favicon 和 JARM 更适合做相似资产聚类;ASN、IP、CNAME、CDN 能帮助你判断资产归属和部署形态。
这在 SRC 场景尤其好用。你手里可能有几千个子域,真正要优先看的,不一定是首页最正常的那个,而是 favicon 和某个已知后台一致、JARM 相似、标题异常、技术栈可打的那一批。
4. 路径、端口和扩展探测
httpx 不是只能打一层首页。官方支持 -path、-ports、-vhost、-http2、-pipeline、-tls-probe、-csp-probe 等能力,不过官方也特别提醒,这类参数更适合按场景单独使用,而不是默认全开。
这里面有几个很实战:
-path :对一批目标统一探测某些路径,比如 :/login/admin/actuator/swagger-ui
-ports:补扫非标 Web 端口
-vhost:适合碰虚拟主机场景
-tls-probe:从证书侧面扩展目标面
-csp-probe:从 CSP 中拿到更多相关域名线索
说白了,它不是一个"只读首页"的工具,而是一个能围绕 HTTP 面持续做扩展侦察的工具。
5. 过滤、匹配和去噪
这个点经常被低估,但实际很关键。
httpx 官方支持字符串、正则、状态码、长度、词数、行数、错误页、重复结果等多种过滤与匹配方式,还支持 DSL。并且提供了 -filter-error-page 和 -filter-duplicates 这类非常贴近实战的参数。
真正跑过大规模资产的人都知道,噪声远比目标多。统一 404、WAF 拦截页、空白页、跳转页、静态占位页,这些都会淹没有效目标
httpx 的强点之一,就是可以把一堆"看起来都活着"的页面,进一步压缩成"值得花时间看的页面"。
为什么它总是出现在 ProjectDiscovery 工具链里
官方 Quick Start 给的链路很典型:先做资产发现,再交给 httpx 做活性确认和信息提取,然后再把结果喂给 nuclei。
这套思路背后其实很清楚:
-
subfinder 解决"有什么域名"
-
naabu 解决"开什么端口"
-
httpx 解决"哪些是有价值的 HTTP 面"
-
katana 解决"往里爬能爬出什么路径"
-
nuclei 解决"基于模板能打出什么问题"
所以 httpx 的位置非常像一个中间层。它上接资产发现,下接漏洞验证和手工测试。这个位置决定了它不一定最"炫",但很可能是你用得最频繁的一个工具。
对白帽子来说,它最实用的几个场景
1. 渗透测试里的资产梳理
拿到一批域名、IP、端口之后,第一步不是马上扫漏洞,而是先知道哪些目标真正值得投入时间。httpx 可以很快帮你筛出在线 Web 资产、登录页、跳转链、测试系统、接口页、后台和异常标题页。
2. SRC 里的批量筛点
SRC 最怕的是资产太多,眼睛不够用。这时候 httpx 不只是"探活工具",而是一个分类器。你可以按标题、状态码、favicon、技术栈、错误页过滤,把真正值得手工看的目标提出来。
3. 攻防演练里的快速建图
演练讲究时间效率。httpx 的高并发、多输入模式、结构化输出和批量路径探测,很适合前期快速拉一张 Web 暴露面图,再往下交给人工验证或其他模块。官方也支持 CIDR、主机、URL 等多种输入。
4. 应急响应里的暴露面复核
应急里经常需要回答这种问题:哪些站还在线?哪些页面被篡改了?哪些后台还暴露着?哪些资产看起来是同一批?httpx 的截图、渲染 DOM、标题、hash、favicon、证书、JARM 这些能力,就很适合做批量复核。官方文档里也提到 -screenshot 可以抓页面截图,并在搭配 -json 时把渲染后的 DOM 一起写进结果。
它还有一个优点:特别适合自动化
官方支持 JSONL、CSV、响应保存,还能作为 Go library 使用;另外还有 GitHub Action 可以跑周期化任务。
这意味着它不只是手工命令行工具,也适合塞进你自己的巡检脚本、资产监控链路、日报任务或者持续验证流程里。对于团队化作业来说,这一点其实很重要:不是每个工具都能自然接入流水线,但 httpx 很适合。
但也别把它神化
httpx 再好用,它也不是漏洞扫描器,更不是业务逻辑测试工具。它不负责帮你理解鉴权链,不负责登录态后的深层测试,也不替代爬虫、代理或人工分析。官方的定位始终是 HTTP probing/toolkit,而不是"自动帮你找洞"的一站式工具。
所以更准确地说,httpx 是一把"把目标面整理清楚"的刀。它帮你节省的,不是最后那一步验证漏洞的时间,而是前面大量无效翻页、无效点击、无效筛选的时间。
HTTPX常用命令
1.探测单个目标
httpx -u https://example.com
2.探测多个目标
httpx -u https://a.com https://b.com
3.从文件读取目标
httpx -l targets.txt
4.只输出存活结果,适合做清洗
httpx -l targets.txt -silent
5.显示状态码和标题
httpx -l targets.txt -sc -title
常规信息收集:状态,标题,长度,IP
1.显示状态码、标题、长度
httpx -l targets.txt -sc -title -cl
2.再加上 Web Server
httpx -l targets.txt -sc -title -cl -server
3.显示 IP
httpx -l targets.txt -ip
4.显示 CNAME
httpx -l targets.txt -cname
5.显示响应时间
httpx -l targets.txt -rt
技术指纹:识别中间件和框架
1.开启技术识别
httpx -l targets.txt -td
2.技术识别 + 标题
httpx -l targets.txt -td -title
3.技术识别 + CPE
httpx -l targets.txt -td -cpe
4.WordPress 指纹探测
httpx -l targets.txt -wp
5.favicon 哈希识别
httpx -l targets.txt -favicon
内容特征:看页面像不像同一套系统
1.显示内容类型
httpx -l targets.txt -ct
2.显示行数
httpx -l targets.txt -lc
3.显示词数
httpx -l targets.txt -wc
4.预览响应体前 100 字符
httpx -l targets.txt -bp
5.计算页面哈希
httpx -l targets.txt -hash md5
过滤和匹配:从海量结果里捞重点
1.只看 200
httpx -l targets.txt -mc 200
2.只看 200 和 302
httpx -l targets.txt -mc 200,302
3.过滤掉 404 和 403
httpx -l targets.txt -fc 404,403
4.匹配标题或正文里含 admin
httpx -l targets.txt -ms admin
5.过滤近似重复页面
httpx -l targets.txt -fd
错误页和杂质清洗:结果更加干净
1.过滤错误页
httpx -l targets.txt -fep
2.过滤长度为 0 或固定模板页
httpx -l targets.txt -fl 0,1234
3.过滤含指定字符串的页面
httpx -l targets.txt -fs "404 Not Found"
4.过滤正则匹配页面
httpx -l targets.txt -fe "error|forbidden|denied"
5.过滤 CDN 资产
httpx -l targets.txt -fcdn cloudfront,fastly
端口,路径,协议:更接近实战
1.探测多个常见 Web 端口
httpx -l targets.txt -p 80,443,8080,8443
2.探测指定路径
httpx -l targets.txt -path /admin
3.同时探测多个路径
httpx -l targets.txt -path /admin,/login,/manage
4.显示 HTTP 和 HTTPS 两种结果,不自动只保留一个
httpx -l targets.txt -nf
5.自定义端口协议映射
httpx -l targets.txt -ports http:80,http:8080,https:443,https:8443官方文档明确说明:默认 HTTPS 不通会回退到 HTTP,-no-fallback 可以同时显示两种探测结果,也支持像 http:443,http:80,https:8443 这样的端口协议映射
跳转,请求头,代理:适合调试和带鉴权测试
1.跟随重定向
httpx -l targets.txt -fr
2.只跟随同主机跳转
httpx -l targets.txt -fhr
3.自定义 Header
httpx -u https://example.com -H "Cookie: session=abc"
4.带多个请求头
httpx -u https://example.com -H "Cookie: a=b" -H "X-Token: test"
5.走 Burp 代理
httpx -l targets.txt -proxy http://127.0.0.1:8080
输出保存:给报告,脚本,自动化用
1.输出到文件
httpx -l targets.txt -sc -title -o result.txt
2.以 JSONL 输出
httpx -l targets.txt -sc -title -td -json -o result.json
3.JSON 中包含响应头
httpx -l targets.txt -json -irh -o result.json
4.JSON 中包含完整请求和响应
httpx -l targets.txt -json -irr -o result.json
5.保存响应内容到目录
httpx -l targets.txt -sr -srd responses
截图和可视化:做后台梳理很好用
1.对所有页面截图
httpx -l targets.txt -ss
2.使用系统 Chrome 截图
httpx -l targets.txt -ss -system-chrome
3.截图时延长超时
httpx -l targets.txt -ss -st 20
4.截图前多等 3 秒让前端渲染完
httpx -l targets.txt -ss -sid 3
5.截图 + 标题 + 技术栈,一次看全
httpx -l targets.txt -ss -title -td -sc
我最常用的八条
httpx -l targets.txt -silenthttpx -l targets.txt -sc -titlehttpx -l targets.txt -sc -title -td -iphttpx -l targets.txt -fc 404,403 -fep -fdhttpx -l targets.txt -path /admin,/login -sc -titlehttpx -l targets.txt -p 80,443,8080,8443 -sc -titlehttpx -l targets.txt -json -irh -o result.jsonhttpx -l targets.txt -ss -title -td
几个高频联动的场景
-
子域名subfinder 的结果直接喂给 httpx
subfinder -d example.com -silent | httpx -silentsubfinder -d example.com -silent | httpx -silent -sc -titlesubfinder -d example.com -silent | httpx -silent -sc -title -td -ip -cdnsubfinder -d example.com -silent | dnsx -silent | httpx -silent -sc -title
2.子域名发现 + 标题 + 技术栈
subfinder -d example.com -silent | httpx -sc -title -td
3.端口扫描结果继续探测 Web
naabu -host example.com -silent | httpx -sc -title
4.资产清洗后给 nuclei
subfinder -d example.com -silent | httpx -silent | nuclei
建议这样干
1.先活性:-silent
2.再识别:-sc -title -td -ip
3.再清洗:-fc 404,403 -fep -fd
4.再定向探测:-path /admin,/login
5.最后留证据:-json 或 -ss