前言:俺之所以把伪造Cookie和处理Referer写到一堂课里面,是因为当初搞这个Cookie的目的就是为了避免提交请求被网站拒绝,而伪造Referer的目的也是为了避免被网站拒绝,所以既然处理这两个参数的目的相同,俺就当做一堂课来讲。
目前访问网站,经常遇到的防盗链措施有以下几种: 1、Cookie验证,最常见是是例如SESSIONID=之类的 2、Referfer验证,一般当域名正确或者为空的时候,网站就不会认为是盗链了。 3、时间戳验证、密钥函数验证或隐藏参数验证,这个在ASP或者JSP的服务器上相当常见了。
本教程的第二课讲解的Viewstate参数,实际上就可以理解成第三种防盗链措施。
所谓的”伪造cookie“,就是从网站获取一个有效的cookie,在提交请求的时候附上这个Cookie而已。
在讲解防盗链之前,请先学习一下Http Head的知识
HTTP(HyperTextTransferProtocol)即超文本传输协议,目前网页传输的的通用协议。HTTP协议采用了请求/响应模型,浏览器或其他客户端发出请求,服务器给与响应。就整个网络资源传输而言,包括message-header和message-body两部分。首先传递message- header,即http header消息。http header 消息通常被分为4个部分:general header, request header, response header, entity header。但是这种分法就理解而言,感觉界限不太明确。根据维基百科对http header内容的组织形式,大体分为Request(请求头)和Response(响应头)两部分。
HTTP头由一系列行组成,每行都包含名称,然后依次是冒号、空格、值。字段可按任何顺序排列。 某些头字段既能用于请求头也能用于响应头,而另一些头字段只能用于其中之一。
下面是一些常见的头: User-Agent: 浏览器可接受的MIME类型。 Accept-Charset:浏览器可接受的字符集。 Accept-Encoding:浏览器能够进行解码的数据编码方式,比如gzip。 Accept-Language:浏览器所希望的语言种类,当服务器能够提供一种以上的语言版本时要用到。 Authorization:授权信息,通常出现在对服务器发送的WWW-Authenticate头的应答中。 Connection:表示是否需要持久连接。如果这里的值为“Keep-Alive”,或者看到请求使用的是HTTP 1.1(HTTP 1.1默认进行持久连接),就表示持续连接。 Content-Length:表示请求消息正文的长度。 Cookie:设置cookie,这是最重要的请求头信息之一 Host:初始URL中的主机和端口。 Pragma:指定“no-cache”值表示服务器必须返回一个刷新后的文档,即使它是代理服务器而且已经有了页面的本地拷贝。 Referer:包含一个URL,用户从该URL代表的页面出发访问当前请求的页面。 User-Agent:浏览器类型,如果Servlet返回的内容与浏览器类型有关则该值非常有用。 |