前端雖然開源望众, 但是由于前端代碼量很多,也有一些特殊的保護代碼的方法伞辛,其中Eval烂翰、js混淆是常用的方式,但是在大的互聯網產品上用得很少蚤氏,因為前端加密(RSA甘耿、AES、MD5等)是為了保證數據傳輸中的安全性竿滨,而非要讓人難以模仿數據傳輸請求佳恬。
而前端中的js混淆、eval對于專業(yè)的人來說形同虛設于游,所以也沒必要做混淆和eval毁葱,并且對于代碼維護是及其不利的,所以在接觸的百度曙砂、騰訊头谜、京東的一些產品上沒遇到過上面兩種問題。
js中的eval()方法就是一個js語言的執(zhí)行器鸠澈,它能把其中的參數按照JavaScript語法進行解析并執(zhí)行柱告,簡單來說就是把原本的js代碼變成了eval的參數,變成參數后代碼就成了字符串笑陈,其中的一些字符就會被按照特定格式“編碼”际度,像下面:
var showmsg="粘貼要加密/解密的javascript代碼到這里";if(1==1){ alert(showmsg);}
eval加密:
eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('5 4="粘貼要加密/解密的3代碼到這里";2(0==0){ 1(4);}',62,6,'1|alert|if|javascript|showmsg|var'.split('|'),0,{}))
變成了一串不知道什么意思的字符串,但是其中的一些關鍵詞還是可以看清楚的涵妥。
應對這種js代碼的方法也很簡單乖菱,有很多在線提供eval解密的功能,可以直接復制代碼解密
image
或者直接在瀏覽器調試模式下使用開發(fā)者工具的控制臺,復制執(zhí)行包含eval()的代碼
image
對于js混淆很好理解就是窒所,把其中的變量鹉勒、方法位置順序打亂,但是又用一些無關的變量或者方法來保證執(zhí)行順序吵取,這種js混淆的也很好處理禽额,復制完整的混淆代碼去js混淆還原網站還原。
image
ID:Python之戰(zhàn)
**|作|者|公(zhong)號:python之戰(zhàn) **
專注Python皮官,專注于網絡爬蟲脯倒、RPA的學習-踐行-總結
喜歡研究和分享技術瓶頸,歡迎關注
獨學而無友,則孤陋而寡聞捺氢!