跳到主要内容

HTTPX使用说明

github地址:https://github.com/projectdiscovery/httpx

将httpx设置为系统命令

cp httpx /usr/local/bin/

中文帮助信息


Usage:
./httpx [flags]

Flags:
INPUT:
-l, -list string 包含要处理的主机列表的输入文件
-rr, -request string 包含原始请求的文件
-u, -target string[] 输入要探测的目标主机

PROBES:
-sc, -status-code 显示响应状态代码
-cl, -content-length 显示响应内容长度
-ct, -content-type 显示响应内容类型
-location 显示响应重定向位置
-favicon 显示'/faveicon.ico'文件的mmh3哈希
-hash string 显示响应主体哈希(supported: 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
-asn 显示主机asn信息
-cdn 显示使用中的cdn/waf
-probe 显示探头状态

HEADLESS:
-ss, -screenshot 启用使用无头浏览器保存页面的屏幕截图
-system-chrome 启用使用本地安装的chrome进行屏幕截图
-esb, -exclude-screenshot-bytes 启用从json输出中排除屏幕截图字节
-ehb, -exclude-headless-body 启用从json输出中排除headless头

MATCHERS:
-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[] 将响应与指定的收藏夹哈希匹配 (-mfc 1494302000)
-ms, -match-string string 将响应与指定字符串匹配 (-ms admin)
-mr, -match-regex string 将响应与指定的正则表达式匹配 (-mr admin)
-mcdn, -match-cdn string[] 将主机与指定的cdn提供程序匹配 (cloudfront, fastly, google, leaseweb, stackpath)
-mrt, -match-response-time string 将响应与指定的响应时间匹配 (-mrt '< 1')
-mdc, -match-condition string 将响应与dsl表达式条件匹配

EXTRACTOR:
-er, -extract-regex string[] 使用匹配的正则表达式显示响应内容
-ep, -extract-preset string[] 显示与预定义regex匹配的响应内容 (ipv4,mail,url)

FILTERS:
-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[] 使用指定的收藏夹哈希筛选响应 (-ffc 1494302000)
-fs, -filter-string string 使用指定字符串筛选响应 (-fs admin)
-fe, -filter-regex string 使用指定的正则表达式筛选响应 (-fe admin)
-fcdn, -filter-cdn string[] 使用指定的cdn提供程序筛选主机 (cloudfront, fastly, google, leaseweb, stackpath)
-frt, -filter-response-time string 筛选具有指定响应时间(秒)的响应 (-frt '> 1')
-fdc, -filter-condition string 具有dsl表达式条件的滤波器响应
-strip 剥离所有标签作为响应。支持的格式: html,xml (default html)

RATE-LIMIT:
-t, -threads int 要使用的线程数 (default 50)
-rl, -rate-limit int 每秒发送的最大请求数 (default 150)
-rlm, -rate-limit-minute int 每分钟发送的最大请求数

MISCELLANEOUS:
-pa, -probe-all-ips 探测与同一主机相关的所有ip
-p, -ports string[] 要探测的端口 (nmap syntax: eg http:1,2-10,11,https:80)
-path string 要探测的路径或路径列表 (comma-separated, file)
-tls-probe 在提取的TLS域上发送http探测 (dns_name)
-csp-probe 在提取的CSP域上发送http探测
-tls-grab 执行TLS(SSL)数据抓取
-pipeline 支持HTTP1.1管道的探测和显示服务器
-http2 支持HTTP2的探测和显示服务器
-vhost 支持VHOST的探测和显示服务器
-ldv, -list-dsl-variables 列出支持dsl matcher/filter的json输出字段密钥名称

UPDATE:
-up, -update 将httpx更新到最新版本
-duc, -disable-update-check 禁用httpx自动更新检查

OUTPUT:
-o, -output string 用于写入输出结果的文件
-oa, -output-all 以所有格式写入输出结果的filename
-sr, -store-response 将http响应存储到输出目录
-srd, -store-response-dir string 将http响应存储到自定义目录
-csv 以csv格式存储输出
-csvo, -csv-output-encoding string 定义输出编码
-j, -json 以JSONL(ines)格式存储输出
-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)

CONFIGURATIONS:
-config string httpx配置文件的路径 (default $HOME/.config/httpx/config.yaml)
-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)
-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请求中的帖子正文
-s, -stream 流模式-开始详细说明输入目标而不进行排序
-sd, -skip-dedupe 禁用重复数据消除输入项目(仅用于流模式)
-ldp, -leave-default-ports 在主机标头中保留默认的http/https端口 (eg. http://host:80 - https://host:443
-ztls 使用ztls库并自动回调到tls13的标准库
-no-decode 避免解码主体
-tlsi, -tls-impersonate 启用实验客户端hello(ja3)tls随机化
-no-stdin 禁用Stdin处理

DEBUG:
-health-check, -hc 运行诊断检查
-debug 在cli中显示请求/响应内容
-debug-req 在cli中显示请求内容
-debug-resp 在cli中显示响应内容
-version 显示httpx版本
-stats 显示扫描统计
-profile-mem string 可选httpx内存配置文件转储文件
-silent 静默模式(不显示httpx程序banner信息)
-v, -verbose 详细模式
-si, -stats-interval int 显示统计信息更新之间等待的秒数 (default: 5)
-nc, -no-color 禁用cli输出中的颜色

OPTIMIZATIONS:
-nf, -no-fallback 显示两个探测的协议 (HTTPS and HTTP)
-nfs, -no-fallback-scheme 使用输入中指定的协议方案进行探测
-maxhr, -max-host-error int 跳过剩余路径之前每个主机的最大错误计数 (default 30)
-ec, -exclude-cdn 跳过CDN/WAF的完整端口扫描 (only checks for 80,443)
-retries int 重试次数
-timeout int 超时时间 (default 10)
-delay value 每个http请求之间的持续时间 (eg: 200ms, 1s) (default -1ns)
-rsts, -response-size-to-save int 要保存的最大响应大小(字节) (default 2147483647)
-rstr, -response-size-to-read int 要读取的最大响应大小(字节) (default 2147483647)

使用案例

  1. 从大量url中过滤出能正常访问的,将结果存入url_ok.txt文件

    httpx -l url.txt -o url_ok.txt

    image-20240430164019122

  2. 获取有价值的指纹信息,并截图,将结果以json格式存入文件

    httpx -l url.txt -sc -ct -location -favicon -jarm -rt -title -server -probe -asn -fep  -irr -include-chain -ss -j -o jjjj

    会在本地生成一个output目录,下面有两个目录

    response存储请求响应数据包

    image-20240430164206996

    screnshot存储截图数据

    image-20240430164148868

  3. CIDR探测

    echo 173.0.84.0/24 | httpx -silent
  4. 过滤错误请求

    httpx -l urls.txt -path /v1/api -fep
  5. 获取favicon指纹

    subfinder -d hackerone.com -silent | httpx -favicon