文档
/

运行环境兼容性

运行环境兼容性

请根据实际运行环境选择target。Browser和Node构建可能包含不同的防御,Browser目标不能替代Node。环境声明、域名限制和运行工具也必须与配置一致。

target

  • browser - Chrome, Firefox, Safari, Edge.
  • browser-no-eval - 与 browser 相同,但输出不使用 eval()。当目标页面的内容安全策略(CSP)禁止 eval/unsafe-eval 时使用。
  • node - Node.js 环境。浏览器专用选项会被禁用(它们需要 window/document,在 Node 中会是空操作或抛出异常)。某些依赖浏览器专有 API 的 vmSelfDefending 防御 - 无头浏览器检测、基于 iframe 的干净 realm 恢复、反检查器/DOM 检查 - 不会为该目标输出。
  • service-worker - Service Worker 上下文。没有 window、没有 documentself 全局对象也不同。
  • userscript - 用户脚本管理器沙箱(例如 Tampermonkey)。vmSelfDefending 防御会相应调整。需要混淆器 v6.9.0+。
  • bytenode - 用于将被 bytenode 编译为 .jsc 的代码。需要混淆器 v6.13.0+。

JavaScript

混淆可能改变函数名及函数源码文本。不要将.name或.toString()作为稳定的应用数据,请改用显式标识符。根据设置,公开的全局名称可能仍然可见。

strictMode

strictMode: null和strictMode: false仍会将显式指令、ES模块和类方法识别为严格模式。strictMode: true将全部输入视为严格模式。请匹配最终运行环境;打包器在混淆后添加严格模式可能改变行为。

CLI / API

在最终混淆之前编译TypeScript或JSX并打包应用。将VM函数选择注释保留到混淆阶段。不要在之后压缩、格式化或改写启用了Self Defending的输出。VM和HTML混淆不支持source map。 使用代理、自动化工具或调试器进行功能测试时,请参阅测试与CI