直接答案:61 个页面共有 637 个带 href 且 target="_blank" 的链接,58 个页面至少有一个。但只有 2 个声明 rel="noopener"、1 个声明 noreferrer,且全部在 E24 首页;文章页 295 个新窗口链接中 0 个声明 noopener。
其中 485 个指向外部站点,483 个外部新窗口链接没有 noopener(99.6%)。现代浏览器已默认对 target="_blank" 应用 noopener,因此这更像“声明缺口”,不能直接当作可利用漏洞;但显式声明仍有利于旧浏览器与一致性。
方法:只读缓存中的 a 标签属性
读取 25 个首页缓存(2026-10-31 至 11-01)与 36 个文章页缓存(2026-11-03 08:40–08:41),零网络请求。只统计带 href 且 target=_blank 的 <a>;rel 含 noopener/noreferrer 分别计数;外链按页面最终主机判断(子域视为内链)。
| 项 | 判定 | 边界 |
|---|---|---|
| 新窗口链接 | target 值为 _blank | 只统计带 href 的锚点 |
| noopener / noreferrer | rel 字符串包含对应词 | 不判断其他 rel 组合 |
| 外链 | 绝对地址且主机不在本站 | 子域视为内链,www 已归一 |
| 页面级 | 整个文档 | 含导航、页脚与分享入口 |
结果:637 个新窗口,2 个 noopener
| 指标 | 数量 | 占 637 |
|---|---|---|
| target=_blank | 637 | 100% |
| 其中外部链接 | 485 | 76.1% |
| 声明 noopener | 2 | 0.3% |
| 声明 noreferrer | 1 | 0.2% |
| 无 noopener | 635 | 99.7% |
| 外链且无 noopener | 483 | 75.8% |
| 页面类型 | 页数 | blank | 外链 blank | noopener |
|---|---|---|---|---|
| 首页 | 25 | 342 | 239 | 2 |
| 文章页 | 36 | 295 | 246 | 0 |
| 合计 | 61 | 637 | 485 | 2 |
文章页的新窗口链接里 83.4% 指向外部,但没有任何 noopener 声明;首页也只有 E24 的 2 个链接声明了 noopener。
集中在少数页面
| 页面 | blank | 其中外链 |
|---|---|---|
| E27 首页 | 82 | 75 |
| E03 文章页 | 65 | 65 |
| E03 首页 | 55 | 18 |
| E13 首页 | 36 | 34 |
| E29 首页 | 27 | 0 |
| E30 首页 | 19 | 3 |
E18、E20、E25 三个首页没有链接,因此也没有新窗口链接;其余 58 页均有。E27 与 E03 的模板把大量入口设为新窗口,是集中整改的重点。
对验收的启示
- 新窗口使用非常普遍。 58/61 页至少有一个 target=_blank,总量 637。
- 显式 noopener 几乎缺席。 只有 2/637 声明;现代浏览器虽默认 noopener,但旧环境与一致性仍需要显式属性。
- 外链是主要场景。 485 个新窗口外链,483 个没有 noopener。
- 文章页要单独修。 295 个新窗口、0 个 noopener,说明文章模板未接入该属性。
- 不要把它说成漏洞。 本期只记录声明缺口,不测试实际利用或浏览器行为。
局限
- 只读声明:现代浏览器对 target=_blank 默认应用 noopener,未声明不等于可利用。
- 只统计带 href 的锚点:无 href 或 JS 打开的窗口不计。
- 主机判断:按字符串主机与子域规则,可能把相似域名视为内链。
- 页面级:含导航、页脚与分享入口,不区分正文。
- 61 页来自 25 首页 + 10 站文章页,不是 61 个独立站点。
数据与复算
匿名数据:equipment-blank-links-2026.csv(61 行 × 9 列:blank、noopener、noreferrer、外链 blank、外链无 noopener、无 noopener 合计)。仓库内为 docs/research/2026-11-blank-links.csv。
解析:scripts/blank_link_probe.py;单元测试 scripts/test_blank_link_probe.py(7 项,无网络)。运行:
python -m unittest scripts.test_blank_link_probe
配套:结构化数据覆盖 pilot、文章页链接结构 pilot、首页链接结构 pilot。、文章页导航入口 pilot
数据来源与口径
- 首页缓存:第 4 期 25 个首页(2026-10-31 至 11-01)。
- 文章页缓存:第 45 期 10 站 36 页(2026-11-03 08:40–08:41),5 个 JS 外壳页排除。
- 统计:带 href 且 target=_blank 的 a 标签,rel 关键词匹配。
- 扫描时间:2026-11-05,零网络请求。