[請益] Javascript使用eval的目的?

看板Soft_Job (軟體人)作者 (1124.2)時間11年前 (2015/01/20 15:58), 編輯推噓12(12012)
留言24則, 15人參與, 最新討論串1/1
本魯在抓兆豐金的匯率網頁時,看到一段Javascript Code https://wwwfile.megabank.com.tw/rates/M001/viewF.asp <SCRIPT LANGUAGE=javascript> 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;}('10={Y:c(D,x){5 11=7.q(D);5 6=11.1g(\'6\');16(i=x;i<6.15;i++){o(x){o(i%2==0){6[i].9+="12";6[i].13=c(){y.9=\'12\'}}M{6[i].9+="X";6[i].13=c(){y.9=\'X\'}}};6[i].1h=c(){y.9=\'1i\'}}}};c J(R){t{1d=1e.1f(\'L()\',R)}v(e){}};c L(){5 8;5 p=K.I()*4;5 Z=\'../1m/1n@1o.1j?I=\'+p;t{8=z W("1k.T")}v(e){t{8=z W("1l.T")}v(e){8=z 1a();8.17=1c}};t{8.18(\'1b\',Z,19);8.1p=c(){o(8.1M==4){o(8.F==1D){V(8.1F,8.F)}}};8.1G(1H)}v(e){}};c V(k,F){5 w=S.U(1L,1K,a,a,a,a);5 N=S.U(1J,a,a,a,a,a);7.q("1t").d=k.l("|")[0];7.q("1u").d=k.l("|")[1];5 j=k.l("|")[2].l("#");5 Q=7.q("P");5 C=7.q("14");C.1v(Q);5 u=C.b(7.f("u"));u.1q("D","P");16(5 i=0;i<j.15;i++){5 6=u.b(7.f("6"));5 A=6.b(7.f("n"));A.9="m 1s";A.d=r(j[i],"1z");5 B=6.b(7.f("n"));B.9="m s";B.d=r(j[i],"1A");5 G=6.b(7.f("n"));G.9="m s";G.d=r(j[i],"1B");5 H=6.b(7.f("n"));H.9="m s";H.d=r(j[i],"1x");5 E=6.b(7.f("n"));E.9="m s";E.d=r(j[i],"1y");5 O=6.b(7.f("n"));O.9="m s";O.d="&1w;"};10.Y(\'14\',1);5 g=0;o(!1r(k.l("|")[3])){g=1*k.l("|")[3]}M{g=h(w)};o(h(g)!=h(w)){5 p=0;1C{p=K.1E(K.I()*h(N))}1I(h(p)>h(N))g=g+p;J(""+g)}M{J(h(w))}};L();',62,111,'|||||var|tr|document|xhttp|className|48|appendChild|function|innerHTML||createElement|i_timeout|parseInt||rateArr|text|split|con_td|td|if|ran_number|getElementById|getKeyValuePairValue|money_td|try|tbody|catch|nums1|start|this|new|td0|td1|table|id|td4|status|td2|td3|random|createTimer|Math|doRefresh|else|nums2|td5|contentTbody|tbodyRemove|nextRequest|String|XMLHTTP|fromCharCode|onLoad|ActiveXObject|tbcolor2|hover|url|jq|tb|tbco lor1|onmouseout|contentTable|length|for|timeout|open|true|XMLHttpRequest|GET|5000|timerID|self|setTimeout|getElementsByTagName|onmouseover|tbcolor3|asp|Msxml2|Microsoft|D001|_|V_|onreadystatechange|setAttribute|isNaN|td_left|dataDate|dataTime|removeChild|nbsp|col3|col4|col0|col1|col2|do|200|round|responseText|send|null|while|54|56|49|readyState'.split('|'),0,{})) </SCRIPT> 想請教各位大大一下, 把程式寫成這樣有什麼好處嗎? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 125.227.198.181 ※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1421740727.A.65A.html

01/20 15:59, , 1F
這通常是程式從你的原始碼自動產生的
01/20 15:59, 1F

01/20 16:00, , 2F
主要是為了壓縮程式碼節省頻寬 然後讓別人很難看懂
01/20 16:00, 2F

01/20 16:00, , 3F
也許人家是 php 之勒的一行行 echo '程式程式
01/20 16:00, 3F

01/20 16:00, , 4F
在 php 上看起來有分行, echo 完後全擠在一起啊 XD
01/20 16:00, 4F

01/20 16:00, , 5F
正常情況這不是人能寫得出的程式碼
01/20 16:00, 5F

01/20 16:01, , 6F
我是開玩笑的 (怕有人認真...)
01/20 16:01, 6F

01/20 16:30, , 7F
通常這是故意的 就是不想讓你看懂
01/20 16:30, 7F

01/20 16:43, , 8F
好處就是讓你看不懂啊
01/20 16:43, 8F

01/20 16:47, , 9F
簡單的minify和加密
01/20 16:47, 9F

01/20 16:48, , 10F
認真問,每個XXX.min.js不都長這樣?
01/20 16:48, 10F

01/20 16:49, , 11F
樓樓上,這不是加密吧...頂多算混淆(?
01/20 16:49, 11F

01/20 17:11, , 12F
這是 base62 shrink 的結果,目的是為了減少程式碼 size
01/20 17:11, 12F

01/20 17:12, , 13F
@abccbaandy min 不一定會 shrink 因為這樣效能比較差
01/20 17:12, 13F

01/20 18:49, , 14F
這是壓縮後的吧
01/20 18:49, 14F

01/20 20:43, , 15F
壓縮吧,考慮到傳輸量,不論網路&硬體設備再怎麼升級
01/20 20:43, 15F

01/20 20:43, , 16F
可以省的還是要省
01/20 20:43, 16F

01/20 23:52, , 17F
這是優化的一種方式
01/20 23:52, 17F

01/21 11:40, , 18F
謝謝大家說明,已用http://jsbeautifier.org/ 反壓縮回來
01/21 11:40, 18F

01/21 19:57, , 19F
長知識
01/21 19:57, 19F

01/21 22:48, , 20F
這是用軟體壓縮的啦 人怎麼可能寫成這樣..
01/21 22:48, 20F

01/25 22:47, , 21F
沒有加密這種事,頂多算混淆無誤
01/25 22:47, 21F

01/25 22:48, , 22F
js要加密必須透過第三方提供key做解密以後才能run,但最終
01/25 22:48, 22F

01/25 22:50, , 23F
在client端還是可以截出完整的內容,只是取得源碼門檻稍高
01/25 22:50, 23F

07/05 21:50, , 24F
好奇請教去抓兆豐的js來研究要幹嘛?
07/05 21:50, 24F
文章代碼(AID): #1KlWgtPQ (Soft_Job)
文章代碼(AID): #1KlWgtPQ (Soft_Job)