文档
/
运行环境兼容性
请根据实际运行环境选择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、没有document,self全局对象也不同。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。
