2

フレームバスターバスターの書き方について質問があります。私はすでにフレームバスターバスターを読んでいます...バスターコードが必要ですが、追加の調整が必要です.

[ http://my_domain.c0m/blog]にある私のブログのコンテンツが、3 つの「ビュー」を示す別のサイトに表示されています。1 つのビューはフィードであり、特に気になりません。残りの 2 つは私を悩ませ、両方を壊したいです。フレーム化を許可したドメインの例外も許可したい。

あるビューでは、ブログの上部の HTML の上部からのコンテンツが最初にコピーされて「スナップショット」が作成され [ http://the_other_domain.c0m/copy_of_blog] 、そのコピーが [ http: //the_other_domain.c0m/ ]。したがって、この場合、「子」コピーは両方とも [ http://the_other_domain.c0m/]でホストされます。Google 翻訳も同様のことを行いますが、これで問題ないと思います。そのため、このフレームを破りたいと思いますが、Google や、自分の PC にコピーを作成し、フレーム化する可能性のあるユーティリティで表示したい人にも例外を許可します。

他のビューでは、私のサイトのコンテンツがフレーム化されているように見えます。したがって、この場合、[ http://my_domain.c0m/blog_post]は[ http://the_other_domain.c0m/] で囲まれています。この枠から抜け出したい。しかし、私の難点は、Google 翻訳や個人の PC ユーザーのフレームを自宅に置いたまま、その方法を理解できないことです。

これまでの私の解決策(私はJavaScriptに特に精通していません。したがって、冗長性と知識の欠如をあまり笑わないでください):

次を使用して最初のフレームをバストすることができました。

<SCRIPT type="text/javascript" >
var topWindow = String(top.location)
var topWord=topWindow.split("/")

var selfWindow = String(self.location)
var selfWord=topWindow.split("/")

var correctLocation ="http://my_domain.c0m/blog" 
var correctWord2="my_domain.c0m" 

var http="http:"


if( ( (topWord[2] != correctWord2) || (selfWord[2] != correctWord2) )   
&& (topWord[2] != 'translate.googleusercontent.com' ) && (topWord[0] == http ) ){
document.write("message expressing my opinion about the asshattery going in here.]" )
setTimeout("redirect_after_pause()",8000)
}else{ 
//document.write("<p><font color='purple'>Hi there! Javascript is working.</font>&nbsp;</p> " )
}


function redirect_after_pause() {
    var correctLocation ="http://my_domain.c0m/blog" 
top.location=correctLocation
}

私はこれが非効率であることを知っています。しかし、それは機能し、a) フランスの私の読者が要求した googlecontent での翻訳、および b) ユーザーが PC にダウンロードするユーティリティでフレーミングしている場合 (uri の先頭が "FILE :".

問題: これは、自分のドメインでホストされているコンテンツが他のドメインでフレーム化されているビューでは機能しません。子ウィンドウで許可されていない var topWindow = String(top.location) まで問題を追跡したと思います。原則として、これは機能します:

<script type="text/javascript">
  if(top != self) top.location.replace(location);

ただし、[ http://translate.google.com] にもホストされている私のコンテンツの翻訳を保持するトップフレームを使用する Google 翻訳の使用を台無しにしていると思います。コピーがフレームに表示されている場合、誰かのPCにローカルコピーを表示する可能性のあるリーダーを同様に台無しにすると思います。

誰かが私を解決策に導くことができれば、例外を許可しながら両方のフレームを壊すために実装できます

ところで: 問題のサイトはフレームバスターを使用しているようです。/static/common.js?1345250291 コード内でこれを見つけました。

enable_iframe_buster_buster:function(){var a=this,b=0;window.onbeforeunload=function(){b++};clearInterval(this.locks.iframe_buster_buster);this.locks.iframe_buster_buster=setInterval(function(){0&lt;b&&(b-=2,a.flags.iframe_story_locations_fetched&&!a.flags.iframe_view_not_busting&&_.contains(["page","story"],a.story_view)&&NEWSBLUR.reader.active_feed&&($(".NB-feed-frame").attr("src",""),window.top.location="/reader/buster",$(".task_view_feed").click()))},1)},disable_iframe_buster_buster:function(){clearInterval(this.locks.iframe_buster_buster)}

それは、特に密度の高い JavaScript の奥深くにあります。それが何をしても、コンテンツがコピーされて [ http://the_other_domain.c0m/]でホストされている場合、フレームをバストする能力には影響しないようです。単純なフレームバスターをバストするかどうかはまだ十分に調査していません。なぜなら、親フレームとは異なるドメインを持つ子フレームで「 var topWindow = String(top.location) 」が禁止されていることを最近認識したからです。

フレームバスターが存在するかどうかにかかわらず、ここで解決策を教えてください。あるサイトが私のコンテンツをこのようにフレーミングしている場合、不快なテクニックが普及するのは時間の問題であることを私は知っています. 前もって感謝します。

4

0 に答える 0