日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

如何对Javascript代码进行二次压缩(混淆)

發布時間:2023/11/29 java 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何对Javascript代码进行二次压缩(混淆) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

如何對Javascript代碼進行二次壓縮(混淆)

對Javascript代碼進行壓縮(混淆),可以有效減少傳輸和加載時間。但是,不是所有的變量(方法)都能被混淆的,一般來說,只有非屬性的變量(方法)可以被混淆,而屬性的變量(方法)就不行了。我們自己是知道這些屬性(方法)是不會被外部訪問和修改的,所以可以很放心地對其進行二次混淆。那么,如何自己定義混淆規則并進行二次混淆呢?

首先,頁面上至少要用一個輸入框和一個按鈕。我這里設置有2個輸入框,分別加上“uncompress”和“compress”兩個類,表示為壓縮和已壓縮的。點擊按鈕,就開始壓縮。

然后,自定義混淆規則,把壓縮前和壓縮后的字符串分別存在兩個數組里面,然后,使用replace方法進行替換就可以了。代碼如下:

var beforeArr = ['addUniqueClass', 'longValue', 'IDontKnowWhatIsIt'],afterArr = ['au', 'lv', 'idk']; $("button").on('click', function() {var value = $(".uncompressed").val();var length = beforeArr.length;for(var i = 0; i< length; i ++) {value = value.replace(beforeArr[i], afterArr[i]);}$(".compressed").val(value); });

?

好了,當我們用這個方法去壓縮代碼后,覺得不放心,看看是不是確實都替換了。在代碼里面搜一搜有沒有壓縮前的字符串,發現還真有,這是怎么回事?原來,當我們只是用字符串替換字符串時,是只能替換一次的,如果后面還有就無法繼續替換了。不過正則表達式里面有全局替換的功能,所以把字符串轉換成全局的正則表達式就可以了。

$("button").on('click', function() {var value = $(".uncompressed").val();var length = beforeArr.length;for(var i = 0; i< length; i ++) {var exg = new RegExp(beforeArr[i], 'g');value = value.replace(exg, afterArr[i]);}$(".compressed").val(value); });

  

這下,代碼里面就搜不到壓縮前的字符串了。

但還有一點不滿意,就是維護性差了些,如果添加新的規則還好辦,如果要修改或刪除原有規則,那就沒那么容易一一對應了。所以要做成映射關系比較直觀的數組,像這樣:

var Arr = ['addUniqueClass → au','longValue → lv', 'IDontKnowWhatIsIt → idk' ];

  

?

這樣,看起來就直觀多了,剩下的只是把箭頭兩側的字符串分別存在兩個數組里面就可以了。

另外,為了避免像$這樣的符號無法被識別出來,可以在正則表達式前面加上'\\'。

完整代碼如下:

var Arr = ['addUniqueClass → au','longValue → lv', 'IDontKnowWhatIsIt → idk' ],beforeArr = [],afterArr = [],arrLength = Arr.length; for(var i = 0; i < ArrLength; i ++){var value = arr[i].split('→')[0].trim();beforeArr.push(value);value = arr[i].split('→')[1].trim();afterArr.push(value); }$("button").on('click', function() {var value = $(".uncompressed").val();var length = beforeArr.length;for(var i = 0; i< length; i ++) {var exg = new RegExp('\\' + beforeArr[i], 'g');value = value.replace(exg, afterArr[i]);}$(".compressed").val(value); });

  

轉載于:https://www.cnblogs.com/linzb1993/p/5949281.html

總結

以上是生活随笔為你收集整理的如何对Javascript代码进行二次压缩(混淆)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。