获取网页的访问来源及其应用

来源:互联网 发布:微信玩牛牛作弊软件 编辑:程序博客网 时间:2024/04/30 21:25
    在网易博客里看到有页面的访问来源,可以看到是从那个链接点进来的。其实获取网页的访问来源也不复杂,主要是获取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还是防君子不防小人,呵呵。