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)