2007年7月6日 星期五

一個防止網頁盜連的Java Script

昨天在檢視sitemeter的資料時, 意外發現一個奇特的訪客, 這位訪客進入本網頁的頁面, 以及離開時的頁面,
都不是本網頁的任何頁面.
而連結到進入點一探究竟時, 竟發現進入點的網頁內容, 與本網頁一致, 然而, 網址列卻全然不同...當下, 很直接的想到--是不是被人盜連了?

於是, 在情況還不明朗的情形下, 決定先找一個方式, 暫時阻擋此類連結.
之前有看過利用網頁內容的座標, 來判斷是否網頁被他人當作嵌入內容, 不過目前的狀況似乎不適合(因為沒有看到任何frame), 在搜尋一陣子後, 發現下面的Java Script可能符合我的需要:
<script type='text/javascript'>
<!--
var who=document.referrer;
if(who && who.indexOf("thedoublee.blogspot.com") == -1 ){
alert("It's an Illegl Link. All Rights reserved by thedoublee.blogspot.com");
top.location.href = "http://thedoublee.blogspot.com";
}
//-->
</script>

將上面這一段程式碼, 加入Template中後, 每當有人意圖從其他入口進入自己的網頁時, 便會跳出一個警告視窗, 之後, 便將使用者導向正確的入口.
這一段程式碼看來相當方便, 然而卻有相當大的問題...效果太暴力了.
以上程式碼, 不只將盜連擋掉, 連一般的連結也擋掉了. 結果就是不論從任何連結, 想要連到本網頁, 都會先彈出一個警告視窗.
真正要有效果的話, 可能得將條件判斷式改得更精確點...也就是說, 不能只判斷進入點是否是本網頁, 而應判斷連過來的網頁是否合法.
不過還好這只是暫時性的作法, 之後針對連過來的網頁查了一下, 發現那是一個網上代理伺服器的網站, 基本上不會造成什麼危害後, 我也就將之移除了.