用途
HTTP Fingerprinting 是一个用于分析 HTTP 响应的技能,目标是从响应中识别技术特征,判断目标站点使用了哪些服务端软件、框架和运行环境。识别依据集中在三个位置:响应头、Cookie 和错误页面。输出结果是结构化的技术清单,包含技术名称、版本(如可提取)、识别来源与置信度。
主要能力
该技能包含五类操作:
-
collect_headers:发起 HTTP 请求并捕获全部响应头,使用命令
curl -sI -L --max-redirs 3 --connect-timeout 10 {url}。重点分析的头部包括 Server、X-Powered-By、X-AspNet-Version、X-AspNetMvc-Version、X-Generator、X-Drupal-Cache、X-Drupal-Dynamic-Cache、X-Varnish、X-Cache、X-Cache-Status、CF-RAY、X-Amz-Cf-Id、X-Vercel-Id、X-Netlify-、Via。 -
analyze_server_header:解析 Server 头以提取软件及版本。内置的匹配模式覆盖 nginx、Apache、Microsoft-IIS、cloudflare、AmazonS3、gunicorn、Werkzeug 等。部分模式可提取版本号,部分模式可推断隐含技术,例如 gunicorn 推断 Python,Werkzeug 推断 Flask 与 Python。
-
detect_powered_by:检查 X-Powered-By 及类似头部。模式涵盖 Express(推断 Node.js,置信度 95)、PHP(可提取版本,置信度 95)、ASP.NET(95)、Servlet(推断 Java,90)、Next.js(推断 React 与 Node.js,95)、Phusion Passenger(推断 Ruby,85)、PleskLin(90)、WP Engine(推断 WordPress,95);X-Generator 下可识别 Drupal 与 WordPress,置信度均为 95。
-
fingerprint_cookies:将 Cookie 名称与已知技术模式匹配,例如 PHPSESSID→PHP(85)、JSESSIONID→Java(85)、ASP.NET_SessionId→ASP.NET(90)、connect.sid→Express.js(推断 Node.js,80)、_rails_session→Ruby on Rails(90)、laravel_session→Laravel(推断 PHP,90)、django_session→Django(推断 Python,90)、cf_clearance→Cloudflare(95)、__cf_bm→Cloudflare Bot Management(95)、AWSALB→AWS ALB(95)、_gh_sess→GitHub(95)、wp-settings- 与 wordpress_logged_in→WordPress(90/95)等。
-
analyze_error_pages:请求不存在的路径(形如 /{random_uuid}),分析 404 响应正文中的技术特征。可识别 Apache、nginx、IIS、Tomcat、Express、Django、Rails、Laravel 等错误页签名,并给出相应置信度。
使用方式与输出
技能通过上述操作采集信号,最终输出 JSON,结构包含 skill、domain、results 与 evidence。results 中记录分析的端点数、每个端点的 URL、响应头、Cookie 列表、状态码以及检测到的技术(名称、版本、来源、置信度、推断项),并汇总出现过的唯一技术及其信号数量与来源。evidence 数组记录证据类型(http_header 或 cookie)、URL、头或 Cookie 名称、值以及 ISO-8601 时间戳。
限制与运行约束
- 限速:每域名每分钟 30 次 HTTP 请求;同一主机两次请求之间延迟 2 秒;遵守 Retry-After 头。
- 错误处理:单次请求 10 秒超时;连接失败时继续;记录所有错误;不会完全失败,而是返回部分结果。
- 安全约束:仅使用 GET、HEAD 等安全方法;跟随重定向最多 3 次;不发送认证信息;遵守 robots.txt 的速率限制;记录所有请求以供审计。
适用场景
适合需要对网站进行技术栈识别与资产梳理的场景,例如安全评估前的信息收集、资产清单归类、技术迁移前的现状盘点。具体运行平台、安装步骤与调用命令,资料中除上述 curl 命令外暂未提供。