Releases: Lolitide/VirusDetector
修复:RDAP/Whois 双查询架构
v2.2.4 (2026-06-24) 修复:API查询优化,性能优化 (2026-06-24)
恢复
- 恢复 PSL 域名解析系统(基于 publicsuffix.zone DNS + 回退 TLD 集)
- extractRegistrableDomain() 提取注册域 (eTLD+1)
- refreshPublicSuffixDNS() 异步预热 PSL 缓存
- UrlUtils.getMainDomain() / isSameMainDomain()
新增
- WhoisClient 双查询架构
- RDAP 协议主查询(RFC 9082/9083,覆盖全部 IANA TLD)
- WhoisCX API 回退查询(全球覆盖,RDAP 不支持/失败时自动切换)
- 两者共享同一内存缓存(24h TTL)
修复
- 修复 RDAP 查询传入注册域可能的问题
- 修复可能使 WhoisCX API HTTP 406 的错误
修复:Whois API查询现已更新为更稳定的RDAP查询
小型修复:Whois API查询现已更新为更稳定的RDAP查询。未更改规则。
v2.2.2 修复bug
修复PSL最短非公共后缀匹配的bug并加入了DNS不可用时的多级公共后缀
v2.2.1 — 域名年龄评分 · PSL 提取 · Emoji 检测 · 可信平台白名单 (2026-06-16)
v2.2.1
概述
从 v1.3.0 到 v2.2.1,评分体系从 5 规则扩展为 8 项检测,新增 Whois API 域名年龄评分系统、PSL 注册域提取、Emoji 密度检测、可信平台白名单四大模块,并完成弹窗 UI 全面重构。
🚀 重大更新
Whois API 域名年龄评分系统
接入 WhoisCX 免费 API,引入三项新检测:
- 域名年龄评分(最高 +60) — 通过 S 型衰减函数对新注册域名进行可疑加分:域名越新分数越高,随注册天数增加逐步衰减至 0。结果缓存 24 小时。
- 域名年龄减分(最高 -20) — 注册 ≥ 180 天的域名可获得分数抵消,注册 ≥ 730 天获最大减分。仅当当前总分 ≥ 20 时生效。
- 下载链接跨域检测(最高 +20) — 检测下载文件域名是否与当前页面跨域,跨域 +10,跨域且下载域名为新注册(< 90 天)再 +10。
PSL 域名提取重构
域名注册域提取不再使用"取最后两段"的简化逻辑,改为通过 DNS-over-HTTPS 查询 publicsuffix.zone 获取公共后缀后逆推,支持 co.uk、hl.cn 等多级公共后缀。DNS 不可用时回退到内置 66 个 TLD 集。
同时移除了已被 PSL 覆盖的「可疑嵌套 TLD」独立检测。
规则五重构:代码工程化 + Emoji 密度双通道
规则五拆分为两个独立子规则并行运行,总分上限从 30 提升至 60:
- 子规则 A:三信号组合判定 — DOM 节点数、框架痕迹、外部资源三信号组合计分(3/3 +30,2/3 +20)。
- 子规则 B:Emoji 密度检测(新增 | 最高 +30) — 先通过 49 个中英文推广关键词预筛选确认页面性质,再计算 Emoji 密度(个/千字符),分段线性映射加分。用于识别钓鱼推广页面中大量 Emoji 吸引眼球的模式。
🆕 新功能
可信平台白名单
新增内置白名单避免将 UGC 平台子页面误判为仿冒官网。对任意访问 URL 提取注册域(eTLD+1)后与白名单比对,命中则跳过规则一。例如 minecraft.fandom.com → fandom.com → 不再判定为 Minecraft 仿冒。
覆盖 44 个平台,分为 Wiki 农场、代码托管 Pages、PaaS/静态托管、博客平台、文档/知识库、建站/个人页六大类。基于 Set 实现 O(1) 查找,新增/移除平台只需修改数组。
竞态条件防护
Content Script 数据回传时校验当前标签页域名是否与采集时一致,快速切换页面后旧数据不再污染新页面。
🎨 UI 重构
弹窗样式全面升级:评分展示从垂直堆叠改为水平布局,新增可视化分数刻度条,深色主题 CSS 变量规范化,新增白名单状态独立面板与 SVG 三态图标系统(安全/危险/白名单)。
🐛 修复
- 早期退出判定从字符串匹配(
detailCN.startsWith('✓'))改为结构化字段(status === 'pass'),消除标记变更导致的失效风险 - 缓存中瞬时事件数据(下载链接 Whois 结果、具体文件名)新增清洗逻辑,防止跨页面污染
- 若干弹窗渲染与状态同步显示 bug
⚡ 优化
- 评分流程从单次汇总改为"初步总分 → 减分 → 最终总分"两阶段
- Whois API 错误通过结构化
{phase, message}传播到前端 - API 请求间隔 ≥ 2s,结果缓存 24 小时,避免重复请求
📋 改动文件
| 文件 | 改动 |
|---|---|
manifest.json |
1.3.0 → 2.2.1 |
background/whois-client.js |
新增 — Whois API 客户端 |
utils/trusted-platforms.js |
新增 — 可信平台白名单(44 平台) |
background/scoring-engine.js |
新增域名年龄/减分/跨域下载/Emoji/可信平台五大模块 |
background/service-worker.js |
缓存清洗 + 下载跨域 + 竞态防护 + 早期退出重构 |
utils/url-utils.js |
PSL DoH 查询 + 注册域提取重构,移除嵌套 TLD 检测 |
utils/constants.js |
域名年龄/Emoji/跨域下载常量体系 |
popup/ (css/html/js) |
深色主题 + 水平布局 + 刻度栏 + 白名单面板 |
README.md |
8 规则完整文档 + 可信平台章节 |
| 其余 6 个文件 | @version 注释同步 |
18 个文件变更,+2086 / -335 行
🔄 兼容性
向后兼容。现有用户白名单、缓存、标签页状态正常延续,无破坏性变更。
v1.3.0 — ICP 检测重构 · CJK 内容识别 + 站点豁免
v1.3.0
🆕 新功能 (Minor)
智能 ICP 备案检测重构
- CJK 内容识别 — 规则三现在通过分析页面正文中的 CJK 字符(汉字)占比判断是否为中国站点,不再依赖域名猜测国籍。避免二级域名伪装绕过检测。
- 双重阈值:≥30 汉字且占比 ≥8%,或 ≥500 汉字直接判定
- 外国站点 ICP 豁免白名单 — 内置 ~150 个全球知名非中国域名的豁免集合,覆盖科技巨头、社交媒体、开发者平台、游戏平台、云服务等类别。白名单中的域名及其子域名均跳过 ICP 检查,消除对外国站点的误报。
- 支持后缀匹配:
calendar.google.com→ 匹配google.com豁免
- 支持后缀匹配:
- 动态注册 — Service Worker 启动时自动将 domain-database 中所有非中国品牌的官方域名(如 Mozilla、7-Zip、WinRAR、TeamViewer 等)注册到豁免集合。
🐛 修复 (Patch)
- ICP 正则兼容新型备案号 —
\d{6,8}→\d{6,12},兼容近年出现的 9-10 位数字备案号(如粤ICP备2024178421号),此前会漏检导致误报 - ICP 正则大小写不敏感 — 添加
i标志,覆盖icp/Icp/ICP等混合大小写变体(如粤icp备14100537号) - 移除过宽关键词
备— DOM 扫描中单字备匹配了「准备」「设备」「备份」等大量无关文本,改为精确词组(备案/公网安备/ICP备) - 移除死参数
rule1Result—_evaluateRule3()中未使用的参数已清理
⚡ 优化
- 二次扫描去重 — Content Script 的两次采集(600ms + 3500ms)现在会比对 ICP 字符串和链接数量的变化,无新增数据时跳过第二次
PAGE_ANALYSIS_RESULT发送 - pageText 扩展 — 全文回退匹配的文本长度从 3000 → 15000 字符,降低深层备案号遗漏概率
📋 改动文件
| 文件 | 改动 |
|---|---|
manifest.json |
1.2.2 → 1.3.0 |
background/icp-utils.js |
+豁免白名单(150域名) + CJK检测 + 正则修复 |
background/scoring-engine.js |
重写规则三判定链路(五级递进) |
background/service-worker.js |
+豁免列表初始化注册 |
content/content-script.js |
关键词优化 + 二次去重 + pageText扩展 |
🔄 兼容性
向后兼容。内部 API 无破坏性变更,所有现有存储数据(白名单、缓存、标签页状态)正常延续。