当前位置: 首页 > 不是生活 > 正文

“反盗链”与反“反盗链”

现在很多大网站都有了图片盗链,于是有时候在某些论坛或者博客就会遇到些“此图片仅限于…用户之间交流与沟通”的图片,这真是无法理喻。

反盗链

引用一段话:来自http://www.ningoo.net/html/2007/get_away_from_photo_defense.html

这里忍不住再次提起这茬,是在豆瓣九点看blog的时候,时不时冒出一副“此图片仅限于…用户之间交流与沟通”的图片出来,一个字,烦。不让看你干脆将所有的img直接过滤掉不显示就好了,还TMD放这么恶心的一个东西来刺激我的眼睛,要知道我眼睛本来就不太灵光,还好心脏不错,不然搞不好弄出人命官司。Blog和网页有啥区别?我想区别就在于我可以通过rss聚合阅读而不必要跑到blogger的网站上去吧。要是你输出的东西这不能看,那仅限于,那还搞个屁的rss。

图片防盗链,请离blog远点。呼吁所有的blogger,离图片防盗链的XX网站远点,不然,你们的内容再好,也只能敬而远之了。

这个我深有同感。

基本大部分网站的反盗链都是通过HTTP Headers里面的Referer属性来判断是否盗链。

如果Referer来源不是他们的网站,他们会直接返回一个意思类似“你盗我链”的图片,或者直接404。

有的网站还算有的人性,如果Referer为空的话,他们会放过这个请求。

像在Apache下,我们可以轻松用rewrite模块来实现图片的反盗链。

RewriteEngine on RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http://(www.)?EverET.org(/)?.*?EverET.org(/)?.)$     [NC] RewriteCond %{HTTP_REFERER} !^http://(www.)?EverET.org(/)?.*?EverET.org(/)?.)$     [NC] RewriteRule .*.(gif|jpg|jpeg|bmp|png)$ http://www.EverET.org/nohotlink.xjpg [R,NC]

也就是看看HTTP Headers中Referer是不是自己的网站,不是就返回一个nohotlinks.xjpg的图片。

反“反盗链”

下面我们来看看百度的图片。

页面源代码如下:

image

打开页面后会发现img标签的图片是一张“仅供XX交流的图片”, 而在iframe里面的img可以正确显示:

image

对于上面那张“该图片仅供XX用户交流使用”的HTTP请求的Headers如下图:

image

它直接返回了一个“仅供XX交流的”

对于下图显示出来的周总理的照片,它的请求如下,很明显可以看到少了Referer这个属性。image

进化

现在,我们可以通过javascript来让图片显得更美观,我们将iframe的大小设置到和图片大小一致,然后去掉边框,于是就看不出图片是在一个iframe里面了。于是我们就可以看到我们敬爱的周总理而不是“仅供XX用户交流使用”。

image

页面源码:

image

hotlink_under_id这个函数可以将在某个id的标签下的所有的图片自动变成iframe,实现突破允许referer为空的反盗链。

javascript代码:

javascript

我们来看另一个网站的反盗链。它同样也是

image

我们可以在http://everet.org/2012/02/the-http-status-code.html看到HTTP状态码是302Found:类似于301,但新的URL应该被视为临时性的替代,而不是永久性的。

301是Moved Permanently。客户请求的文档在其他地方,新的URL在Location头中给出,浏览器应该自动地访问新的URL。

看报文是被Apache重定向了。

image

本文链接: http://everet.org/2012/04/anti-hotlink.html

本文固定链接: http://web.wqz.me/18.html | 网络手抄本

该日志由 网络手抄本 于2014年06月28日发表在 不是生活 分类下, 你可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。
原创文章转载请注明: “反盗链”与反“反盗链” | 网络手抄本
关键字: , ,

“反盗链”与反“反盗链”:等您坐沙发呢!

发表评论

快捷键:Ctrl+Enter