本项目基于 上游 StackPrism,保留原有网页技术栈识别能力,并在当前源码构建版中增加:
- Agent Bridge:用户显式开启后,本机 AI Agent 可通过
127.0.0.1bridge 发起一次性站点采集任务;该能力默认关闭,不对外网开放。 - 站点体验 Profile:除技术栈外,还可输出视觉、布局、组件、交互、UX 和资源摘要,并支持按需采集截图、下载结构化 JSON 与图片文件。
- repo-local Agent skill:提供 Node.js bridge、Python fallback 和一键采集脚本,供本机 Agent 直接生成
stackprism.site_experience_profile.v1。 - 采集安全与生命周期保护:增加本机 opt-in、目标与最终 URL 校验、私网策略、一次性会话绑定、分片哈希校验、超时取消、扩展重启后的失败闭环和敏感信息脱敏。
- Agent Bridge 跨浏览器交付:补充 Chromium 与 Firefox 128+ 下的 bridge content script、数据收集同意兼容、构建打包和发布产物卫生检查。
上方 Chrome Web Store / Edge Add-ons 徽章和上游 Release 指向上游公开版本,不代表已包含这些 fork 增量。要使用上述能力,请从当前仓库源码构建并加载扩展。
StackPrism 是一款基于 Manifest V3 的网页技术栈识别扩展,支持 Chrome / Edge / Firefox 128+。它从页面运行时、DOM、资源 URL、响应头、动态资源和 JS 版权注释中收集证据,把前端、后端、CDN、SaaS、统计、支付、登录、CMS 等线索按类目展示。
检测链路分成 4 个互补通道:
- 静态扫描:DOM、全局变量、CSS 类名、CSS 变量、
<meta> - 响应头观察:主文档、XHR、iframe 的响应头与 HTTP 版本
- 动态资源监听:交互后新增脚本、样式、iframe、feed
- 源码版权注释扫描:主 bundle 开头注释中的第三方依赖
结果会合并去重并按 50+ 个类目分组,同时对伪造响应头、自指检测、宽泛关键词误报做主动收敛。
| 维度 | 类目示例 |
|---|---|
| 前端 | 前端框架 / UI 框架 / 前端库 / 构建与运行时 |
| 服务端 | Web 服务器 / 后端框架 / CDN 与托管 / 开发语言 |
| 内容 | 网站程序 / 主题模板 / CMS / 电商平台 / RSS |
| 第三方 | SaaS / 探针监控 / AI 大模型 / 第三方登录 / 支付 |
| 营销 | 广告 / 营销 / 统计 / 分析 / 标签管理 |
| 安全 | HTTPS / HTTP/2 / HTTP/3 / CSP / Cookie 同意 |
普通用户可优先使用上游 Chrome Web Store、Edge Add-ons 或 GitHub Release。完整步骤见 安装与启用。
需要当前 fork 的 Agent Bridge、repo-local skill 或 Firefox 本地验证时,从源码加载:
git clone https://github.com/MisonL/stackprism.git
cd stackprism
pnpm install
pnpm run build # Chrome / Edge
pnpm run build:firefox # FirefoxChrome / Edge:
- 打开
chrome://extensions或edge://extensions - 开启「开发者模式」
- 选择「加载已解压的扩展程序」,加载构建出的
dist/ - 刷新目标网页并打开扩展 popup 查看结果
Firefox:
- 打开
about:debugging#/runtime/this-firefox - 选择「临时载入附加组件」,加载
dist-firefox/manifest.json
当前 fork 文档不提供 Firefox Add-ons 商店入口。Firefox 128+ 开发验证优先临时加载 dist-firefox/manifest.json。release/ 里的 .xpi 是打包产物;普通 Firefox 正式版永久安装仍以 Firefox Add-ons 签名或对应发布渠道为准。
pnpm run dev
pnpm run test:unit
pnpm run lint
pnpm run typecheck
pnpm run build
pnpm run build:firefox
pnpm run docs:devpnpm run typecheck 会执行 vue-tsc --noEmit 并触发生产构建。
Agent Bridge 是当前 fork 源码构建版包含的默认关闭本机能力。用户在扩展设置中显式启用后,本机 AI Agent 可以通过 127.0.0.1 bridge 获取 stackprism.site_experience_profile.v1,用于参考目标站点的技术、视觉、布局、组件、交互、UX 和资源摘要。
- 只读采集:不会点击页面、提交表单或登录账号。
- 本机边界:启用状态保存在当前浏览器 profile 的
chrome.storage.local,不随 Chrome sync 同步。 - 隐私约束:不采集 Cookie、Authorization、localStorage/sessionStorage 明文或完整敏感文本。
- Profile 下载:下载的是纯 JSON;截图不内嵌 base64,而是提供按需下载链接。要核对实际视觉效果,请打开或下载
visualProfile.screenshot.downloadUrl。
常用采集命令:
TARGET_URL="https://public-or-desensitized.example"
node agent-skill/stackprism-site-experience/scripts/capture-site.mjs \
--url "$TARGET_URL" \
--out /tmp/stackprism-profile.json \
--include tech,visual,layout,components,interaction,ux,assets本机开发目标、localhost、127.0.0.1、私网地址和真实内网目标需要同时在扩展设置中开启高风险网络目标选项,并在 helper 请求中使用 --allow-private-network。直接调用 bridge API 或 Python fallback 时,对应字段是 capture request 里的 options.allowPrivateNetworkTarget = true。不要复用被 PRIVATE_NETWORK_TARGET_BLOCKED 拒绝的旧 bridge URL。
更完整的协议、生命周期和安全说明见 docs/dev/agent-bridge.md 与 agent-skill/stackprism-site-experience/SKILL.md。
StackPrism 的规则系统是数据驱动的。绝大多数检测只需要修改规则 JSON,不需要改运行时代码。
- public/rules/index.json:规则加载清单
public/rules/page/*.json:页面源码、DOM、资源 URL、动态资源public/rules/headers/*.json:响应头与 Cookie 线索- public/rules/self-host-suppress.json:自指抑制
- public/tech-links.json:技术名到官网/仓库 URL 映射
新规则的字段:
- 优先使用响应头、专属资源 URL、
<meta name="generator">、window.<global>、独家 CSS 选择器、JS 版权注释、官方 SDK 包名。 - 避免短 keyword 和宽泛 regex,例如
spring、phoenix、column、container。 - 优先限定
matchIn,尽量用resources、url、headers,少用裸html。
- 后端识别不保证完整:很多站点隐藏
Server/X-Powered-By等响应头,后端结果会以"线索 + 置信度"形式展示 - 伪造响应头:扩展会主动识别 ≥4 种主体身份字段同时存在的伪造场景,将相关类目降级为低置信度并附警示。但单个伪造头无法识别,建议结合其他线索判断
- 首次安装请刷新目标页:让 background 捕获主文档响应头
- 源代码搜索是 DOM 快照:基于当前页面的
outerHTML,不等同于服务器最初返回的原始 HTML - Chrome 系统页 / 商店页 / 内置页通常不允许注入检测脚本
- 动态监控异步累积:content script 在后台累计交互后新加载的资源,重新打开 popup 可看到合并结果
StackPrism 目前内置 50+ 类目下 2000+ 条识别规则。新框架、新 SaaS、漏识别和误报都欢迎反馈:
- Bug / 误识 / 漏识反馈:上游 Issues — popup 上直接点「识别不准确」按钮会自动填好上游议题模板
- 规则贡献:扩展设置页点「提交规则贡献」,或直接 PR 到
public/rules/ - Agent Bridge / 当前 fork 问题:当前 fork 未开启公开 Issues / Discussions,请在相关 PR 线程或维护者指定渠道反馈,并说明 fork commit、浏览器 profile、是否启用 Agent Bridge,以及是否使用 repo-local skill
- 讨论与提案:上游 Discussions
提交代码前请至少运行 pnpm run test:unit && pnpm run lint && pnpm run typecheck。
本项目基于 CC BY-NC-SA 4.0 协议授权 —— 允许非商业自由使用与二次修改,必须署名且衍生作品采用同一协议。完整法律文本见 LICENSE。
{ "name": "技术名称", "category": "前端框架", // 50+ 类目之一 "patterns": ["正则或关键词"], "matchType": "regex", // 或 "keyword" "matchIn": ["html", "resources", "url", "headers", "dynamic"], "confidence": "高", // 高 / 中 / 低 "kind": "类型说明", "selectors": ["CSS 选择器"], "globals": ["window 全局变量名"], "classPrefixes": ["类名前缀"] }