2017-02-09 7 views
0

ソースを表示しようとすると、JavaScriptの文が1つしか表示されないというWebページがあります。私は検索して、彼らがそれをどうやって行ったのか理解できませんでした。あなたは自分自身を見て、見ることができます。HTMLをdocument.write javascriptに変換する

Webページは次のとおりです。

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

は、彼らがそれを行っている方法:Weird Page

私は私だけもコメントのように見え、それ以下のようなものを参照してくださいソースを表示するとき?誰かがそれを見たときに私のウェブページをどのように変えることができますか?

+0

あなたの質問は何ですか? – Marvin

+0

彼らはそれをどのようにしていますか?誰かがそれを見たときに私のウェブページをどのように変えることができますか? – FLICKER

答えて

0

This articleここで何が起こっているのかを明確にするのに役立ちます。

基本的に、この会社は標準のエスケープ文字を使用してページ全体をエンコードしています。ビットをunencode(...)から最後の括弧の最後までコピーしてブラウザコンソールに貼り付けると、実際の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>要素を提供しています。この要素には、JSをサポートしていないブラウザ(より詳しくはWhy does Javascript ignore single line HTML Comments?)をサポートするHTMLコメントが含まれています。コメントには、文字列のエスケープされていないバージョン、エスケープされて送信されます。

関連する問題