最近发现有些网站的的图片等资源文件,直接通过输入URL在浏览器上无法浏览。应该是一些网站对图片的内容作了来源验证的功能;到底是怎么实现的呢。
考虑到HTTP是无状态连接;所以服务只能通过请求的HTTP数据特征进行判断。于是我想到HTTP协议头应该有标记来源的Header属性。果不其然Referer属性就是干这个用了(应该是我孤陋寡闻了)。Referer属性的值一般是表示上一级地址(也就是从什么地方连接到这个文件的,也可以理解为父连接)。 这样服务器通过Referer判断是否是被允许的父连接;如果不是则返回错误代码4**什么的就可以了。
绕过这种网站得到资源也比较容易,做一个代理就行了,不让浏览器去直接去(浏览器比较老实),代理负责取这个防盗链接的资源(记住代理通过http取这个资源的时候,要在在request Header上加入一个被允许的 Referere,一般是那个网站的host)。注意使用要谨慎啊(小心被找麻烦),这里谈论的仅仅是技术上的问题。