快速上手
Obfuscator.io 会把您可读的源代码转换为难以理解和逆向工程的受保护版本。它非常适合保护专有算法、授权逻辑以及对业务至关重要的代码。
欢迎使用 Obfuscator.io
本指南将带您完成第一个文件的混淆、预设的选择,以及对选项面板的理解。如需更深入的讲解,请参阅 VM 混淆、基础混淆和最佳实践等章节。
快速开始
1. 粘贴您的代码
在左侧编辑器面板中输入您的 JavaScript 代码。您可以直接粘贴代码,也可以使用文件上传功能进行批量处理。
2. 选择一个预设
在选项面板的下拉框中选择一个预设。想要改动最小可从
Low Obfuscation开始,想要在保护与性能之间取得平衡则选择Medium Obfuscation。VM 预设提供最强的安全性。3. 点击“Obfuscate”
点击 Obfuscate 按钮即可转换您的代码。受保护的输出会显示在右侧面板中。
4. 复制或下载
使用 Copy 按钮或 Download 获取您混淆后的代码。输出结果可直接用于生产环境。
代码兼容性 重要
混淆(无论 VM 还是非 VM)会以某些方式转换您的代码,从而影响特定的 JavaScript 运行时行为。您的代码不能依赖以下特性:
function.toString()/class.toString()混淆会彻底改变源代码的表示形式。任何解析或比较函数源码的代码都会失效。
function.name/class.name函数名和类名会被重命名为随机标识符。依赖
.name进行日志记录、序列化或反射的代码将得到混淆后的名称。
// Before obfuscation
function calculatePrice() { return 100; }
console.log(calculatePrice.name); // "calculatePrice"
console.log(calculatePrice.toString()); // "function calculatePrice() { return 100; }"
// After obfuscation
console.log(calculatePrice.name); // "_0x1a2b3c" (random)
console.log(calculatePrice.toString()); // Completely transformed code
基础选项
在混淆之前,请配置以下基础选项,使其与您的目标环境相匹配。
目标环境 target
指定混淆后代码的执行环境:
browser(默认)- 标准的网页环境。输出代码与node相同,但某些浏览器专用选项不允许与node目标一起使用。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+。
严格模式 strictMode
控制混淆器如何处理 JavaScript 严格模式:
Auto(默认)- 从代码中自动检测严格模式。混淆器会分析您的代码中的"use strict"指令Enable- 无论是否存在"use strict",都强制将所有代码按严格模式处理Disable- 只有源代码中显式的"use strict"指令才会被视为严格模式
理解预设
预设是预先配置好的选项组合。它们分为两个独立的组别:
VM 预设 Pro(字节码虚拟化)
| 预设 | 安全性 | 性能 | 特性 |
|---|---|---|---|
VM Low | 良好 | ~10x | 基础 VM、间接分派 |
VM Medium | 强 | ~12-15x | + 操作码乱序、编码、诱饵 |
VM High | 很强 | ~15-18x | + 无用代码、有状态操作码、栈编码 |
VM Ultra High | 最高 | ~20x+ | + 非 VM 混淆层 |
性能数字为平均值 —— 实际影响在很大程度上取决于代码本身(例如递归密集或热循环代码会明显更慢)。
非 VM 预设(标准混淆)
| 预设 | 保护强度 | 性能 | 特性 |
|---|---|---|---|
Default | 基础 | 极小 | 字符串数组、简化 |
Low | 轻度 | ~1.1x | + 自我防护、禁用控制台 |
Medium | 中等 | ~1.5x | + 控制流、无用代码、base64 |
High | 强 | ~2x | + 调试保护、rc4 编码 |
界面概览
- 输入编辑器 - 粘贴或输入您的 JavaScript 源代码。可拖放文件,或使用上传按钮。也支持包含内联脚本的 HTML 文件 Pro。
- 输出面板 - 显示混淆后的结果。使用 Copy 或 Download 按钮获取受保护的代码。
- 预设选择器 - 选择 VM 或非 VM 预设。VM 预设分组在顶部。预设决定了您可以进一步自定义的基础选项。
- 选项面板 - 精细调整混淆设置。点击任意选项旁的
?图标即可查看其文档。 - Obfuscate 按钮 - 使用所选选项转换您的代码。VM 预设在服务端处理;非 VM 预设在您的浏览器中运行。
- 多文件上传 Pro - 一次处理多个文件并打包为 ZIP 下载。
- 历史记录面板 Pro - 访问您以往的混淆记录并恢复输入/输出。
