httpx
大神用法
httpx -status-code -location -title -tech-detect -server -method -ip -probe -no-fallback -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, 1ikeGecko) Chrome/98.0.4758.102 Safari/537.36 MicroMessenger/7.0.20.1781(0x6700143B) NetType/WIFI MiniPr0gramEnv/WindowSWindowsWechat/WMPF XWEB/6945" -t 10 -http-proxy "http://127.0.0.1:8080" -follow-redirects -x "GET,P0ST" -l .\new.txt
-status-code
显示状态码
-content-length
显示响应内容长度
-content-type
显示响应内容类型
-location
跳转的地址
-title
标题
-tech-detect
中间件、框架
-server
web服务中间件
-method
请求方式
-ip
IP地址
-probe
状态,成功还是失败
-no-fallback
http/https 80/443 排列组合访问
http://www.baidu.com:80
https://www.baidu.com:443
http://www.baidu.com:443
https://www.baidu.com:80
可以检测tls配置错误导致waf的配置可嫩失效二bypass waf
-H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, 1ikeGecko) Chrome/98.0.4758.102 Safari/537.36 MicroMessenger/7.0.20.1781(0x6700143B) NetType/WIFI MiniPr0gramEnv/WindowSWindowsWechat/WMPF XWEB/6945"
这个是使用微信小程序PC客户端的 UA ,相当于万能 UA ,请求几乎不会被拒绝,若有些站点有小程序存在会返回小程序的前端相应,若没有小程序的相应会返回手机的相应,若手机的相应也没有就会放回PC的相应,由于小程序通常不会被WAF拦截,所以使用这个 UA 不会被 WAF 拦截。
-t
指定线程数
-http-proxy
代理
-follow-redirects
若有重定向就执行重定向
-x "GET,P0ST"
使用 GET,P0ST 分别请求
-l
指定弹出列表
存活探测
# http/https
httpx -sc -cl -ct -location -title -tech-detect -server -method -ip -probe -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, 1ikeGecko) Chrome/98.0.4758.102 Safari/537.36 MicroMessenger/7.0.20.1781(0x6700143B) NetType/WIFI MiniPr0gramEnv/WindowSWindowsWechat/WMPF XWEB/6945" -fr -x "GET,P0ST" -nf -t 10 -l .\url.txt
# 不匹配请求协议
httpx -sc -cl -ct -location -title -tech-detect -server -method -ip -probe -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, 1ikeGecko) Chrome/98.0.4758.102 Safari/537.36 MicroMessenger/7.0.20.1781(0x6700143B) NetType/WIFI MiniPr0gramEnv/WindowSWindowsWechat/WMPF XWEB/6945" -fr -x "GET,P0ST" -t 10 -l .\url.txt
# get 探活
httpx -sc -title -probe -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, 1ikeGecko) Chrome/98.0.4758.102 Safari/537.36 MicroMessenger/7.0.20.1781(0x6700143B) NetType/WIFI MiniPr0gramEnv/WindowSWindowsWechat/WMPF XWEB/6945" -fr -t 1 -l url
帮助信息
标志:
输入:
-l, -list string 输入文件,包含要处理的主机列表
-rr, -request string 包含原始请求的文件
-u, -target string[] 输入要探测的目标主机
探测:
-sc, -status-code 显示响应状态码
-cl, -content-length 显示响应内容长度
-ct, -content-type 显示响应内容类型
-location 显示响应重定向位置
-favicon 显示 '/favicon.ico' 文件的 mmh3 哈希值
-hash string 显示响应主体哈希(支持:md5, mmh3, simhash, sha1, sha256, sha512)
-jarm 显示 jarm 指纹哈希
-rt, -response-time 显示响应时间
-lc, -line-count 显示响应主体行数
-wc, -word-count 显示响应主体字数
-title 显示页面标题
-bp, -body-preview 显示响应主体的前 N 个字符(默认 100)
-server, -web-server 显示服务器名称
-td, -tech-detect 根据 wappalyzer 数据集显示正在使用的技术
-method 显示 HTTP 请求方法
-websocket 显示使用 WebSocket 的服务器
-ip 显示主机 IP
-cname 显示主机 CNAME
-extract-fqdn, -efqdn 从响应主体和头中提取域名和子域名,以 jsonl/csv 格式输出
-asn 显示主机 ASN 信息
-cdn 显示正在使用的 CDN/WAF(默认 true)
-probe 显示探测状态
无头模式:
-ss, -screenshot 启用使用无头浏览器保存页面截图
-system-chrome 启用使用本地安装的 Chrome 进行截图
-ho, -headless-options string[] 使用附加选项启动无头 Chrome
-esb, -exclude-screenshot-bytes 启用从 JSON 输出中排除截图字节
-ehb, -exclude-headless-body 启用从 JSON 输出中排除无头头信息
-st, -screenshot-timeout int 设置截图超时(秒,默认 10)
匹配器:
-mc, -match-code string 匹配响应的指定状态码 (-mc 200,302)
-ml, -match-length string 匹配响应的指定内容长度 (-ml 100,102)
-mlc, -match-line-count string 匹配响应主体的指定行数 (-mlc 423,532)
-mwc, -match-word-count string 匹配响应主体的指定字数 (-mwc 43,55)
-mfc, -match-favicon string[] 匹配响应的指定 favicon 哈希 (-mfc 1494302000)
-ms, -match-string string[] 匹配响应的指定字符串 (-ms admin)
-mr, -match-regex string[] 匹配响应的指定正则表达式 (-mr admin)
-mcdn, -match-cdn string[] 匹配主机的指定 CDN 提供商(cloudfront, fastly, google)
-mrt, -match-response-time string 匹配响应的指定响应时间(秒) (-mrt '< 1')
-mdc, -match-condition string 匹配响应的 DSL 表达式条件
提取器:
-er, -extract-regex string[] 显示响应内容中匹配的正则表达式
-ep, -extract-preset string[] 显示响应内容中匹配的预定义正则表达式(url, ipv4, mail)
过滤器:
-fc, -filter-code string 过滤响应的指定状态码 (-fc 403,401)
-fep, -filter-error-page 通过基于 ML 的错误页面检测过滤响应
-fl, -filter-length string 过滤响应的指定内容长度 (-fl 23,33)
-flc, -filter-line-count string 过滤响应主体的指定行数 (-flc 423,532)
-fwc, -filter-word-count string 过滤响应主体的指定字数 (-fwc 423,532)
-ffc, -filter-favicon string[] 过滤响应的指定 favicon 哈希 (-ffc 1494302000)
-fs, -filter-string string[] 过滤响应的指定字符串 (-fs admin)
-fe, -filter-regex string[] 过滤响应的指定正则表达式 (-fe admin)
-fcdn, -filter-cdn string[] 过滤主机的指定 CDN 提供商(cloudfront, fastly, google)
-frt, -filter-response-time string 过滤响应的指定响应时间(秒) (-frt '> 1')
-fdc, -filter-condition string 过滤响应的 DSL 表达式条件
-strip 从响应中剥离所有标签。支持格式:html, xml(默认 html)
速率限制:
-t, -threads int 使用的线程数(默认 50)
-rl, -rate-limit int 每秒发送的最大请求数(默认 150)
-rlm, -rate-limit-minute int 每分钟发送的最大请求数
其他:
-pa, -probe-all-ips 探测与同一主机关联的所有 IP
-p, -ports string[] 要探测的端口(nmap 语法:例如 http:1,2-10,11,https:80)
-path string 要探测的路径或路径列表(以逗号分隔,文件)
-tls-probe 对提取的 TLS 域(dns_name)发送 HTTP 探测
-csp-probe 对提取的 CSP 域发送 HTTP 探测
-tls-grab 执行 TLS(SSL)数据抓取
-pipeline 探测并显示支持 HTTP1.1 管道的服务器
-http2 探测并显示支持 HTTP2 的服务器
-vhost 探测并显示支持 VHOST 的服务器
-ldv, -list-dsl-variables 列出支持 DSL 匹配器/过滤器的 JSON 输出字段键名称
更新:
-up, -update 更新 httpx 到最新版本
-duc, -disable-update-check 禁用自动 httpx 更新检查
输出:
-o, -output string 写入输出结果的文件
-oa, -output-all 以所有格式写入输出结果的文件名
-sr, -store-response 将 HTTP 响应存储到输出目录
-srd, -store-response-dir string 将 HTTP 响应存储到自定义目录
-ob, -omit-body 在输出中省略响应主体
-csv 以 CSV 格式存储输出
-csvo, -csv-output-encoding string 定义输出编码
-j, -json 以 JSONL(行)格式存储输出
-irh, -include-response-header 在 JSON 输出中包含 HTTP 响应(头) (-json 仅适用)
-irr, -include-response 在 JSON 输出中包含 HTTP 请求/响应(头 + 主体) (-json 仅适用)
-irrb, -include-response-base64 在 JSON 输出中包含经过 Base64 编码的 HTTP 请求/响应 (-json 仅适用)
-include-chain 在 JSON 输出中包含重定向 HTTP 链 (-json 仅适用)
-store-chain 在响应中包含 HTTP 重定向链 (-sr 仅适用)
-svrc, -store-vision-recon-cluster 包含视觉重建集群 (-ss 和 -sr 仅适用)
-pr, -protocol string 使用的协议(unknown, http11)
配置:
-config string httpx 配置文件的路径(默认 $HOME/.config/httpx/config.yaml)
-auth 配置 projectdiscovery cloud (pdcp) API 密钥(默认 true)
-r, -resolvers string[] 自定义解析器列表(文件或以逗号分隔)
-allow string[] 允许处理的 IP/CIDR 列表(文件或以逗号分隔)
-deny string[] 拒绝处理的 IP/CIDR 列表(文件或以逗号分隔)
-sni, -sni-name string 自定义 TLS SNI 名称
-random-agent 启用随机用户代理(默认 true)
-H, -header string[] 自定义 HTTP 请求头
-http-proxy, -proxy string 要使用的 HTTP 代理(例如 [http://127.0.0.1:8080)](http://127.0.0.1:8080%EF%BC%89)
-unsafe 发送原始请求,跳过 golang 规范化
-resume 使用 resume.cfg 恢复扫描
-fr, -follow-redirects 跟随 HTTP 重定向
-maxr, -max-redirects int 每个主机跟随的最大重定向次数(默认 10)
-fhr, -follow-host-redirects 跟随同一主机上的重定向
-rhsts, -respect-hsts 尊重重定向请求的 HSTS 响应头
-vhost-input 获取 vhosts 列表作为输入
-x string 请求方法探测,使用 'all' 探测所有 HTTP 方法
-body string 包含在 HTTP 请求中的 POST 主体
-s, -stream 流模式 - 开始处理输入目标而不排序
-sd, -skip-dedupe 禁用去重输入项(仅在流模式下使用)
-ldp, -leave-default-ports 在主机头中保留默认 HTTP/HTTPS 端口(例如 [http://host:80](http://host:80) - [https://host:443)](https://host:443%EF%BC%89)
-ztls 使用 ztls 库,并在 TLS1.3 的情况下自动回退到标准库
-no-decode 避免解码主体
-tlsi, -tls-impersonate 启用实验性的客户端 hello (ja3) TLS 随机化
-no-stdin 禁用标准输入处理
-hae, -http-api-endpoint string 实验性的 HTTP API 端点
调试:
-health-check, -hc 运行诊断检查
-debug 在 CLI 中显示请求/响应内容
-debug-req 在 CLI 中显示请求内容
-debug-resp 在 CLI 中显示响应内容
-version 显示 httpx 版本
-stats 显示扫描统计信息
-profile-mem string 可选的 httpx 内存配置文件转储文件
-silent 静默模式
-v, -verbose 详细模式
-si, -stats-interval int 显示统计更新之间等待的秒数(默认:5)
-nc, -no-color 禁用 CLI 输出中的颜色
优化:
-nf, -no-fallback 显示探测的两个协议(HTTPS 和 HTTP)
-nfs, -no-fallback-scheme 使用输入中指定的协议方案进行探测
-maxhr, -max-host-error int 每个主机的最大错误计数,超过后跳过剩余路径(默认 30)
-e, -exclude string[] 排除与指定过滤器匹配的主机('cdn', 'private-ips', cidr, ip, regex)
-retries int 重试次数
-timeout int 超时(秒,默认 10)
-delay value 每个 HTTP 请求之间的持续时间(例如:200ms, 1s)(默认 -1ns)
-rsts, -response-size-to-save int 要保存的最大响应大小(字节,默认 2147483647)
-rstr, -response-size-to-read int 要读取的最大响应大小(字节,默认 2147483647)