獲取網頁的訪問來源及其應用

    在網易博客裏看到有頁面的訪問來源,可以看到是從那個鏈接點進來的。其實獲取網頁的訪問來源也不復雜,主要是獲取http頭的Referer變量。首先看一個asp例子:
    建立文件a.asp:
<%
Dim from
from = Request.ServerVariables("HTTP_REFERER")
Response.write "訪問來源是:" & from
%>

<script language="javascript">
var from = document.referrer;

if (from != '') alert("訪問來源是:" + from);
</script>
<br/>
11111111111

    在瀏覽器輸入http://localhost/a.asp(根據實際修改訪問路徑),看到效果如下:
訪問來源是:
11111111111
    會看到並沒有獲取到訪問來源。然後建立一個b.asp文件:
<a href="a.asp">dfd</a>

    在瀏覽器輸入http://localhost/b.asp(根據實際修改訪問路徑),點擊超鏈接,看到效果如下:
訪問來源是:http://localhost/b.asp
11111111111

    這就說明獲取到了網頁的訪問來源。從以上步驟看出,直接在瀏覽器地址欄輸入url是沒有訪問來源的,從頁面的超鏈接等地方打開的頁面就可以獲取訪問來源的url。上面給出了在js裏用document.referrer得到訪問來源,在asp裏用Request.ServerVariables("HTTP_REFERER")獲得訪問來源。其實在jsp裏也是類似的,用request.getHeader("Referer")。
    獲取網頁的訪問來源又有什麼用途呢?一是可以跟蹤記錄從哪些網站、網頁上訪問了自己的站點或者頁面;二是可以記住剛纔訪問的頁面,可以跳轉回去;還有一個很重要的用途,就是防盜鏈。一些網站的資源如圖片、視頻等,可能被鏈到其它網站上,或者黑客頻繁的訪問某些資源,把網站搞癱瘓,於是一些網站用了防盜鏈技術。一種簡單的防盜鏈方法就是獲取訪問的url,比對是否是自己的url或者經授權的url,不符合條件的就不讓訪問,或者顯示一些提示信息。
    道高一尺,魔高一丈。訪問的url是很容易被僞造的,我們再做一個c.asp:
<%
Dim http
set http = server.createobject("Microsoft.XMLHTTP")
http.open "GET","http://localhost/a.asp",false
http.setRequestHeader "Referer","http://www.baidu.com/"
http.send()
Response.write http.Responsetext
%>
    然後在瀏覽器輸入http://localhost/c.asp(根據實際修改訪問路徑),頁面上看到如下內容:
訪問來源是:http://www.baidu.com/
11111111111

    可以看到Referer很容易的被僞造成一個任意輸入的字符串。說了半天,HTTP_REFERER還是防君子不防小人,呵呵。
發佈了35 篇原創文章 · 獲贊 1 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章