文档
/

快速上手

快速上手

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、没有 documentself 全局对象也不同。
  • 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 - 访问您以往的混淆记录并恢复输入/输出。