2017-02-09 146 views
0

我看到一個網頁,當我嘗試查看源代碼時,我只看到一條JavaScript語句。我搜查了一下,但無法弄清楚他們是如何做到的。你可以做,看看你自己。將Html轉換爲document.write javascript

該網頁是:Weird Page

當我查看源代碼,我只看到類似下面這看起來也像是評論:

<script type='text/javascript' language='Javascript'> 
<!--document.write(unescape('%3C%2........................ 
................ 

它們是如何做到這一點?當有人看到它的外觀時,我如何改變我的網頁?

+0

你的問題到底是什麼? – Marvin

+0

他們是怎麼做到的?當有人看到它的外觀時,我如何改變我的網頁? – FLICKER

回答

0

This article可能有助於澄清發生了什麼。

基本上,該公司使用標準轉義字符對其整個頁面進行了編碼。如果您將unencode(...)中的位複製到最後一個parens,並將其粘貼到瀏覽器控制檯中,您將看到實際的HTML內容。

如果你看一下我的鏈接頁面的源代碼,你會看到普通的文本轉換爲所有轉義字符的功能:

// CONVERTS *ALL* CHARACTERS INTO ESCAPED VERSIONS. 
function escapeTxt(os){ 
    var ns=''; 
    var t; 
    var chr=''; 
    var cc=''; 
    var tn=''; 
    for(i=0;i<256;i++){ 
     tn=i.toString(16); 
     if(tn.length<2)tn="0"+tn; 
     cc+=tn; 
     chr+=unescape('%'+tn); 
    } 
    cc=cc.toUpperCase(); 
    os.replace(String.fromCharCode(13)+'',"%13"); 
    for(q=0;q<os.length;q++){ 
     t=os.substr(q,1); 
     for(i=0;i<chr.length;i++){ 
      if(t==chr.substr(i,1)){ 
       t=t.replace(chr.substr(i,1),"%"+cc.substr(i*2,2)); 
       i=chr.length; 
      } 
     } 
    ns+=t; 
    } 
    return ns; 
} 
0

正在發生的事情是相當多的這聽起來像。該服務器正在提供一個<script>元素,該元素包含一個HTML註釋,以使不支持JS的瀏覽器變得更加輕鬆(請閱讀更多信息:Why does Javascript ignore single line HTML Comments?),並在註釋中向文檔寫入非轉義版本的字符串,這是發送逃脫。