HTTPArchive/wappalyzer

GitHub: HTTPArchive/wappalyzer

Stars: 104 | Forks: 48

[![Test](https://static.pigsec.cn/wp-content/uploads/repos/2026/02/ae40dd0bd2165642.svg)](https://github.com/HTTPArchive/wappalyzer/actions/workflows/test.yml) [![Lint](https://static.pigsec.cn/wp-content/uploads/repos/2026/02/d9c9d255ad165645.svg)](https://github.com/HTTPArchive/wappalyzer/actions/workflows/lint.yml) # Wappalyzer
[Wappalyzer](https://www.wappalyzer.com) 用于识别网站上的技术,例如 CMS、Web 框架、电子商务平台、JavaScript 库、分析工具和 [more](https://www.wappalyzer.com/technologies)。 ## 前置条件 - [Git](https://git-scm.com) - [Node.js](https://nodejs.org) 版本 14 或更高 ## 快速开始 ``` git clone https://github.com/HTTPArchive/wappalyzer.git cd wappalyzer npm install ``` ## 使用方法 ### Chrome 扩展程序 - 前往 `chrome:extensions` - 启用“开发者模式” - 点击“加载已解压的扩展程序” - 选择 `src` ## 规范 一长串 [regular expressions](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions) 用于识别网页上的技术。Wappalyzer 会检查 HTML 代码,以及 JavaScript 变量、响应头等。 模式(正则表达式)保存在 [`src/technologies/`](https://github.com/HTTPArchive/wappalyzer/tree/main/src/technologies) 中。以下是一个应用程序指纹的示例。 ### 示例 ``` "Example": { "description": "A short description of the technology.", "cats": [ "1" ], "cookies": { "cookie_name": "Example" }, "dom": { "#example-id": { "exists": "", "attributes": { "class": "example-class" }, "properties": { "example-property": "" }, "text": "Example text content" } }, "dns": { "MX": [ "example\\.com" ] }, "js": { "Example.method": "" }, "excludes": "Example", "headers": { "X-Powered-By": "Example" }, "text": "\bexample\b", "css": "\\.example-class", "robots": "Disallow: /unique-path/", "implies": "PHP\\;confidence:50", "requires": "WordPress", "requiresCategory": "Ecommerce", "meta": { "generator": "(?:Example|Another Example)" }, "probe": { "/path": "" }, "scriptSrc": "example-([0-9.]+)\\.js\\;confidence:50\\;version:\\1", "scripts": "function webpackJsonpCallback\\(data\\) {", "url": "example\\.com", "xhr": "example\\.com", "oss": true, "saas": true, "pricing": ["mid", "freemium", "recurring"], "website": "https://example.com", } ``` ## JSON 字段 在 [`schema.json`](https://github.com/HTTPArchive/wappalyzer/blob/main/schema.json) 查找 JSON 架构。 ### 必需属性
字段 类型 描述 示例
cats Array 一个或多个类别 ID。 [1, 6]
website String 应用程序网站的 URL。 "https://example.com"
### 可选属性
字段 类型 描述 示例
description String 用英式英语对技术的简短描述(最多 250 个字符)。语气应中立、实事求是;不要像广告一样。 "A short description."
icon String 应用程序图标文件名。 "WordPress.svg"
cpe String CPE 是一种结构化的技术命名方案。要检查 CPE 是否有效且存在(使用 v2.3),请使用搜索)。 "cpe:2.3:a:apache:http_server
:*:*:*:*:*:*:*:*"
saas Boolean 该技术以软件即服务 的形式提供,即托管或基于云的。 true
oss Boolean 该技术拥有开源许可证。 true
pricing Array 成本指标(基于典型计划或平均月度价格)和可用的定价模式。仅适用于付费产品。 取值之一:
  • low 每月低于 100 美元
  • mid 每月 100 - 1,000 美元之间
  • high 每月超过 1,000 美元
以及以下任意值:
  • freemium 提供免费计划
  • onetime 接受一次性付款
  • recurring 提供订阅服务
  • poa 询价
  • payg 按需付费(例如佣金或基于使用量的费用)
["low", "freemium"]
### 暗示、依赖和排斥(可选)
字段 类型 描述 示例
implies String | Array 一个应用程序的存在可以暗示另一个应用程序的存在,例如 WordPress 意味着也在使用 PHP。 "PHP"
requires String | Array 与 implies 类似,但只有在识别出所需技术时才运行检测。适用于特定 CMS 的主题。 "WordPress"
requiresCategory String | Array 与 requires 类似;只有在识别出所需类别中的技术时才运行检测。 "Ecommerce"
excludes String | Array implies 的反面。一个应用程序的存在可以排除另一个应用程序的存在。 "Apache"
### 模式(可选)
字段 类型 描述 示例
cookies Object Cookies。 { "cookie_name": "Cookie value" }
dom String | Array | Object 使用 查询选择器 检查元素属性、特性和文本内容。 { "#example-id": { "property": { "example-prop": "" } } }
dns Object DNS 记录:支持 MX、TXT、SOA 和 NS。 { "MX": "example\\.com" }
js Object JavaScript 属性(区分大小写)。避免使用短属性名以防止匹配压缩后的代码。 { "jQuery.fn.jquery": "" }
headers Object HTTP 响应头。 { "X-Powered-By": "^WordPress$" }
text String | Array 匹配纯文本。应仅在无法使用其他方法的特定情况下使用。 \bexample\b
css String | Array CSS 规则。当网站强制执行同源策略时不可用。出于性能原因,仅使用一部分可用的 CSS 规则来查找匹配项。 "\\.example-class"
probe
(未在 HTTP Archive 中使用)
Object 请求 URL 以测试其是否存在或匹配文本内容。 { "/path": "Example text" }
robots
(未在 HTTP Archive 中使用)
String | Array Robots.txt 内容。 "Disallow: /unique-path/"
url String | Array 页面的完整 URL。 "^https?//.+\\.wordpress\\.com"
xhr
(未在 HTTP Archive 中使用)
String | Array XHR 请求的主机名。 "cdn\\.netlify\\.com"
meta Object HTML meta 标签,例如 generator。 { "generator": "^WordPress$" }
scriptSrc String | Array 页面上包含的 JavaScript 文件的 URL。 "jquery\\.js"
scripts
(未在 HTTP Archive 中使用)
String | Array JavaScript 源代码。检查内联和外部脚本。出于性能原因,尽可能避免使用 scripts,改用 js "function webpackJsonpCallback\\(data\\) {"
html(已弃用) String | Array HTML 源代码。模式必须包含 HTML 开始标签以避免匹配纯文本。出于性能原因,尽可能避免使用 html,改用 dom "<a [^>]*href=\"index.html"
## 模式 模式本质上是写成字符串形式的 JavaScript 正则表达式,但有一些补充。 ### 特性与陷阱 - 由于采用字符串格式,使用点(`\\.`)等特殊字符时,转义字符本身必须被转义。双引号只需转义一次(`\"`)。斜杠不需要转义(`/`)。 - 不支持标志。正则表达式被视为不区分大小写。 - 捕获组(`()`)用于版本检测。在其他情况下,使用非捕获组(`(?:)`)。 - 尽可能使用字符串的开始和结束锚点(`^` 和 `$`)以获得最佳性能。 - 短或通用的模式可能导致应用程序识别错误。尽量找到唯一的字符串进行匹配。 ### 标签 标签(一种非标准语法)可以附加到模式(以及 implies 和 excludes,用 `\\;` 分隔)以存储附加信息。
标签 描述 示例
confidence 指示可能导致误报的可靠性较低的模式。目标是达到 100% 的综合置信度。如果未指定,默认为 100%。 "js": { "Mage": "\\;confidence:50" }
version 使用特殊语法从模式匹配中获取版本号。 "scriptSrc": "jquery-([0-9.]+)\.js\\;version:\\1"
### 版本语法 应用程序版本信息可以使用捕获组从模式中获取。可以使用三元运算符(`?:`)评估条件。
示例 描述
\\1 返回第一个匹配项。
\\1?a: 如果第一个匹配项包含值则返回 a,否则不返回任何内容。
\\1?a:b 如果第一个匹配项包含值则返回 a,否则返回。
\\1?:b 如果第一个匹配项包含值则不返回任何内容,否则返回 b。
foo\\1 返回附加了第一个匹配项的 foo。
标签:BYOVD攻击, C++17, C2日志可视化, Chrome扩展, CMS检测, DOM解析, ESC4, HTTP Archive, HTTP头分析, JavaScript库检测, LSASS转储, MITM代理, OSINT, Shellcode, Syscall, Wappalyzer, Web开发, Web技术栈分析, Web界面, 二进制文件分析, 信息收集, 内核驱动漏洞利用, 函数图谱, 动态调用, 反调试, 回调移除, 密码管理, 开源情报, 技术指纹识别, 技术调研, 指纹识别, 数据可视化, 正则表达式, 网站分析工具, 网络侦察, 网络安全, 网页抓取, 自定义脚本, 隐私保护