JavaScript 混淆加密工具

完全免費的在線 JavaScript 混淆加密工具,不會插入廣告,無任何功能限制,強力保護你的代碼不被竊取!

工具加載中...

使用幫助

壓縮成一行 去除代碼中的換行符。
标識符混淆方式

設置變量名、函數名的混淆方式。

dictionary

使用來自 标識符字典 中的名稱

hexadecimal

使用十六進制模式随機生成 (例如: 0xabc123)

mangled

使用簡短的名稱 (例如: a, b, c, 等等..)

标識符字典

設置标識符混淆的名稱字典。

标識符前綴

設置混淆後的标識符使用特定的前綴

當混淆加載在同一頁面上的多個文件時,請配置此選項。為每個文件使用不同的前綴有助于避免這些文件的全局标識符之間的沖突。

混淆全局變量

開啟此選項可能影響其它代碼的運行,請謹慎使用!

開啟後,将混淆全局變量與全局函數名。

自我保護

開啟後将使加密後的代碼無法被格式化。如果有人嘗試格式化加密後的代碼,将使代碼無法正常運行。

啟用此選項後代碼将被強制壓縮成一行。

控制流平坦化

此選項非常影響性能,請按需開啟!

使代碼控制流扁平化。控制流扁平化是一種阻礙程序理解的源代碼結構轉換。訪問 JavaScript's obfuscator GH page 頁面以了解其原理。

控制流平坦化阈值

調節範圍:0~1,值越大,代碼閱讀難度越大,但輸出的代碼運行效率也相應的越低。可以按需調節。

死代碼注入

啟用該選項将導緻加密後的代碼量變大。

随機向代碼中插入無意義的代碼(不會被運行)使得代碼的解密變得更困難。

死代碼注入阈值

調節死代碼注入的阈值(範圍:0~1)

啟用該選項需要同時開啟 字符串轉換為數組 功能。

分割字符串

啟用該選項将導緻加密後的代碼量變大。

将文本字符串按照 分割字符串塊長度 設定的值進行分割。

分割字符串塊長度

使用該選項來指定字符串分割後的塊長度。

字符串轉換為數組

去除代碼中固定的字符串文本,并将其統一放在一個數組中。例如 var m = "Hello World"; 中的 "Hello World",将會被替換為一個函數調用,在運行時再檢索此值。一個例子:var m = _0xb0c3('0x1');

打亂字符串數組位置

将字符串數組放在一個随機的位置。如果您的原始源代碼量很大,建議開啟這個選項,能大大提升代碼解密難度。

打亂字符串數組排序

随機排列字符串數組中的内容。

加密字符串數組

開啟後将導緻代碼運行效率略微降低。

使用 Base64 或 RC4 對字符串進行加密。RC4 加密方式加密後解密難度大,但加密後的代碼運行效率比 Base64 加密方式低 30-35%。請按需選擇。

字符串轉數組阈值

您可以使用此設置來調整将字符串文字插入到字符串數組中的概率(從0到1)。 此設置在大型代碼庫中非常有用,因為對字符串數組函數的重複調用會降低代碼速度。

轉換 Object Keys

轉換 (混淆) object keys.

例如,将此代碼 var a = {enabled: true}; 混淆後,将會隐藏 enabled 對象鍵: var a = {}; a[_0x2ae0[('0x0')] = true;.

該功能需要與 字符串轉換為數組 配合使用。

字符串轉換為 Unicode 形式

将所有字符串轉換為它們的 Unicode 形式。例如,字符串 "Hello World!" 将被轉換為 "'\x48\x65\x6c\x6c\x6f\x20\x57\x6f\x72\x6c\x64\x21".

這個太容易被解碼了,沒什麼意義,不建議開啟。而且開啟後會增加代碼大小。

禁用控制台輸出 通過重寫為空函數禁用 console.log, console.info, console.errorconsole.warn
禁止控制台調試

啟用後,如果開啟浏覽器控制台,浏覽器将被凍結。

這将使他人無法使用 控制台 調試工具進行代碼調試 (支持 Google Chrome 和 Mozilla Firefox 浏覽器)。

調試保護定時器

開啟後,會使用一個定時器來卡住控制台,使得控制台無法進行調試操作。

白名單域名

默認不進行域名限定。如果添加了白名單域名,測限定加密後的代碼隻能在白名單域名下運行。

添加多個白名單域名或子域名的方法:

如果需要将 example.com 的子域名全部設置為白名單域名,添加 .example.com 即可。

白名單标識符

白名單中的标識符不會被混淆。支持正則表達式。

例如,添加 ^someName 則所有以 someName 開頭的變量、函數名和函數參數都不會被混淆。

白名單字符串

同上。

Source Map

請确保不要在生産環境中嵌入 Source Map,因為可以通過它找到源代碼,導緻加密失去意義。

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 ,并附加到加密後代碼的末尾。

例如,如果設置 Base URL"http://localhost:9000" 同時設置 Source Map 文件名"example", 最終會将 //# sourceMappingURL=http://localhost:9000/example.js.map 附加到加密後代碼的結尾。

加密種子

默認情況下 (種子設為“0”時), 每次加密同一段代碼得到的結果都不一樣(變量名及字符串打亂的順序會不一樣)。
如果你需要同一段代碼每次的加密結果保持一緻,将 種子 值設為一個固定的整數即可。

運行環境

設置加密後的代碼需要在哪裡運行

  • Browser
  • Browser No Eval
  • Node

當前 browsernode 選項的處理方式是一樣的。

常見問題

加密後的代碼無法運行?

本工具對原始 JavaScript 代碼的規範性要求極高。建議采用閉包的寫法,同時該加分号的地方加分号,該加大括号的地方加大括号。

如果确保代碼寫得沒問題,加密後仍有報錯,請檢查安全域名及變量混淆相關配置是否正确。

這個加密工具加密後的代碼是絕對安全的嗎?

這個工具隻能用來混淆代碼,使得代碼變得不可讀以及難以被還原。簡而言之是隻能防住大部分的小白,真正的大神還是能對代碼進行逆向破解的。

因為 JavaScript 需要在浏覽器前端讀取運行,因此也不可能有 100% 無法被破解的 JavaScript 加密。(如果有,也是騙人的……

為什麼加密後的代碼比原始代碼大很多?

因為加密後的代碼中插入了很多額外的代碼,用來起到保護作用。

使用本工具加密後,再使用其它工具加密一次,是否會更安全?

千萬别這麼做。多個加密工具配合使用隻會起反作用,同時還可能破壞代碼的原始結構,導緻代碼無法正常運行。

你們會偷偷保存加密前的代碼嗎?

絕對不會!本工具全程在本地進行加密。如果仍覺得不放心,可以在工具載入完成後,斷掉網再進行加密。

我的原始代碼丢了,能從加密後的代碼中找回嗎?

找不回了。代碼一旦加密,神仙也無法恢複出原始代碼。因此請保存好原始代碼。

這個工具可以用來加密 Node.js 源代碼嗎?

可以。