JaydenYoonZK/package-reality-check

GitHub: JaydenYoonZK/package-reality-check

一个浏览器端的依赖包真实性校验工具,用于在安装前检测 AI 建议的 npm 和 PyPI 包是否存在、是否可疑或纯属幻觉。

Stars: 0 | Forks: 0

# 包真实性检查 👻 在安装前,将 AI 建议的依赖项与 npm 和 PyPI 进行核对。粘贴 `package.json`、`requirements.txt` 或带有导入的代码,找出哪些包是真实的,哪些是全新的高仿包,哪些完全是凭空捏造的。

Open the live tool GitHub stars MIT License

Package Reality Check flagging two invented packages from an AI-generated requirements.txt, with did-you-mean hints **[打开在线工具](https://jaydenyoonzk.github.io/package-reality-check/)** 或 **[查看它在示例中捕获幽灵包的过程](https://jaydenyoonzk.github.io/package-reality-check/?demo)**。检查直接从您的浏览器对公共注册表进行。您的代码不会发送到其他任何地方。 ## 为什么会有这个工具 代码助手会产生包名称幻觉。一项[对 576,000 个生成代码样本的 2024 年研究](https://arxiv.org/abs/2406.10279)发现,在超过 200,000 个不重复的虚构名称中,几乎五分之一的建议包根本不存在。由于模型会自我重复,相同的幽灵名称会一次又一次地出现,而攻击者已经开始注册这些名称并植入恶意 payload。安全社区将其称为 slopsquatting。 防御方法很简单但也有效:在安装前先查一下该包。这个工具可以一次性完成整个依赖列表的查询。 ## 功能特性 - 解析 `package.json`(每个依赖字段)、`requirements.txt`(说明符、扩展项、环境标记)以及带有导入的原始 JS/TS 或 Python 源代码 - 跳过 Node 内置模块和 Python 标准库,包括在最近的 Python 版本中已移除的模块(例如 `telnetlib`) - 直接从您的浏览器查询 npm 和 PyPI(这两个注册表都会发送 CORS 标头,因此没有任何代理会看到您的输入) - 标记出不存在的包、过去 120 天内注册的包、下载量极低的包、已弃用的包,以及与数百个流行包拼写错误距离非常接近的名称 - 用通俗易懂的语言解释每一个判定结果,并提供指向注册表页面的链接 ## 使用说明 无需安装:[jaydenyoonzk.github.io/package-reality-check](https://jaydenyoonzk.github.io/package-reality-check/) 在本地运行: ``` git clone https://github.com/JaydenYoonZK/package-reality-check.git cd package-reality-check npm run serve # http://localhost:8322 ``` ## 在您自己的项目中使用该引擎 解析、标准库过滤、拼写错误距离检查以及判定逻辑都位于一个无依赖的 ES 模块 [`docs/checker.js`](docs/checker.js) 中。网络调用是分离的,因此该模块可以在任何地方运行: ``` import { extract, verdict, registryUrls } from "./checker.js"; const { kind, deps } = extract(sourceOrManifestText); // fetch registryUrls(dep.name, dep.ecosystem).api yourself, then: const result = verdict(dep.name, dep.ecosystem, { exists, createdAt, downloads }); ``` ## 测试 ``` npm test ``` 15 个测试覆盖了清单解析、导入提取、标准库过滤、PEP 508 规范化、拼写错误距离以及每个判定路径。 ## 需要了解的局限性 - 仅支持 npm 和 PyPI。其他生态系统正在 [issues](https://github.com/JaydenYoonZK/package-reality-check/issues) 中跟进。 - 内部/私有包将显示为 PHANTOM,因为该工具只能查看公共注册表。这也提醒您需要保护好这些名称。 - 编辑距离无法读取意图;偶尔出现的合法且名称相似的包需要您花三十秒时间自行判断。 ## 许可证 MIT。由 [Jayden Yoon ZK](https://github.com/JaydenYoonZK) 构建和维护。姊妹项目:[AI Paste Cleaner](https://github.com/JaydenYoonZK/ai-paste-cleaner)。
标签:AI代码安全, Web前端, 依赖安全, 域名收集, 多模态安全, 数据可视化, 自定义脚本