收录申请
用户登陆
JS代码混淆加密

JS代码混淆加密

  • 输入JS代码
  • 结果输出
开始处理 上传
复制 清空
基本设置
调用保护
域名锁定
启用源映射
字符串转换
字符串数组索引
字符串数组调用
字符串数组包装
字符串数组编码
拆分字符串
字符串转换为Unicode形式
标识符转换
标识符
重命名设置
基他设置
控制流平坦化
死代码注入
压缩成一行 去除代码中的换行符。
标识符混淆方式 dictionary

使用来自 标识符字典 中的名称

hexadecimal

使用十六进制模式随机生成 (如:0xabc123)

mangled

使用简短的名称 (如: a, b, c..)

标识符字典

设置标识符混淆的名称字典。

标识符前缀

设置混淆后的标识符使用特定的前缀

当混淆加载在同一页面上的多个文件时,请配置此选项,防止它们之间的冲突。

混淆全局变量

开启此选项可能影响其它代码的运行,请谨慎使用!

开启后,将混淆全局变量与全局函数名。

自我保护

开启后将使加密后的代码无法被格式化。

启用此选项后代码将被强制压缩成一行。

控制流平坦化

此选项非常影响性能,请按需开启!

使代码控制流扁平化。控制流扁平化是一种阻碍程序理解的源代码结构转换。访问点我 了解其原理。

阈值:范围:0~1,值越大,代码阅读难度越大,但输出的代码运行效率也越低。

死代码注入

该选项将会导致加密后的代码量变大。

随机向代码中插入无意义的代码(不会被运行)使得代码的解密变得更困难。

阈值:范围:0~1

启用该选项需要同时开启 字符串转换为数组 功能。

分割字符串

启用该选项将导致加密后的代码量变大。

将文本字符串按照 分割字符串块长度 设定的值进行分割。

字符串块长度:使用该选项来指定字符串分割后的块长度。

字符串转换为数组

去除代码中固定的字符串文本,并将其统一放在一个数组中。

例:var m = "Hello World"; 中的 "Hello World",将会被替换为一个函数调用,在运行时再检索此值。

例:var m = _0xb0c3('0x1');

打乱字符串数组位置

将字符串数组放在一个随机的位置。如果您的原始源代码量很大,建议开启这个选项,能大大提升代码解密难度。

打乱字符串数组排序

随机排列字符串数组中的内容。

加密字符串数组

开启后将导致代码运行效率略微降低。

RC4 加密方式加密后解密难度大,但加密后的代码运行效率比 Base64 加密方式低 30-35%。

字符串转数组阈值

此设置来调整将字符串文字插入到字符串数组中的概率(从0到1)。

此设置在大型代码库中非常有用,因为对字符串数组函数的重复调用会降低代码速度。

字符串转换为 Unicode 形式

将字符串转换为它们的 Unicode 形式。

这个没什么意义,不建议开启。

禁用控制台输出

通过重写为空函数禁用 console.log, console.info, console.errorconsole.warn

调试保护

启用后,如果开启浏览器控制台,浏览器将被冻结。

保护间隔:开启后,会使用一个定时器来卡住控制台,使得控制台无法进行调试操作。

域名锁定

如添加了锁定域名,则加密后的代码只能在锁定域名下运行

例:73so.com 的子域名全部设置为白名单域名,添加 .73so.com 即可。

保留标识符

白名单中的标识符不会被混淆。支持正则表达式。

例:添加 ^someName 则所有以 someName 开头的变量、函数名和函数参数都不会被混淆。

保留字符串

同上

源映射

注意:请确保不要在生产环境中开启

Source maps 能帮助你调试 JavaScript 代码。如果非要在生产中进行调试,可以将单独的 Source maps 文件上载到秘密位置,然后将浏览器指向该位置。

Inline Source Map

将 Source maps 射嵌入到混淆代码的结果中。如果需要进行本地调试,会很有用。

Separate Source Map

将 Source maps 一起生成一个单独的文件。这对于调试生产中的代码很有用,因为这使您可以将 Source maps 上传到服务器上的秘密位置,然后设置浏览器指向该位置。

使用 Source Map Base URLSource Map File Name 来自定义sourceMappingURL ,并附加到加密后代码的末尾。

加密种子

值为0时, 每次加密同一段代码得到的结果都不一样。

如果你需要同一段代码每次的加密结果保持一致,将种子值设为一个固定的整数即可。