破解某些网站图片的防盗链
发布于 10 年前 作者 alsotang 45162 次浏览 最后一次编辑是 8 年前 来自 分享

今天做个项目学到了一点,防盗链机制如果允许无 Referer 访问的话,是很容易绕过的。

先说说防盗链的原理,http 协议中,如果从一个网页跳到另一个网页,http 头字段里面会带个 Referer。图片服务器通过检测 Referer 是否来自规定域名,来进行防盗链。

如果盗用网站是 https 的 protocol,而图片链接是 http 的话,则从 https 向 http 发起的请求会因为安全性的规定,而不带 referer,从而实现防盗链的绕过。

比如现在在 cnode 这里,由于我们启用了 https,所以任何 http 的图片几乎都可以直接贴过来并显示了。


20150519 update 现在我已经把出去的 https 也加上了 referer

41 回复

试试微博的相册 =,=

图片

@Ralph-Wang 微博不防盗链的

论坛的 https速度感觉慢啊

不对呀,图片服务器检查到Referer不是规定的值,那么图片服务器会返回错误或给出提示,如果现在从Https加载做了防盗的http图片,由于没有Referer,图片是加载不了的吧。

@jinphen 如果没有 referer,服务器会认为是浏览器直接打开了文件,所以是可以显示的。

贴个 QQ 空间的图过来试试:

网易空间的:

奈斯,学习了

默默点了举报…

我是来看图的。

这只是一些公司对协议机制上不完善,谈不上破解

百度的一直是参数错误!

test 测试百度图片

360图片测试 测试360图片

测试搜搜图片 测试搜搜图片

我去!测试下先。

防盗链机制如果允许无 Referer 访问的话

最关键是这句话

请用curl命令。。防盗链无解。

我在网站头加了 <meta name="referrer" content="always"> 所以出去的链接都会带 referrer 了,无论 https 或者 http

想请教下,能不能控制出去的referrer的值…

@flybears 不能,这个地方浏览器卡得很紧

@alsotang 浏览器卡的紧 但程序代理你怕不怕 所有引用的外部图片 xxx.com/xxx.png 全部给你弄成 cnodejs.org/daolian?imgurl=xxx.com/xxx.png 程序里面用curl获取 再输出 外面在弄个varnish给你一缓存

@gloomyzerg 这已经是防爬虫的场景了吧?

@alsotang 我是来看图的。。。。。。。。

在http网站测试了下, 也能够正常现实. qq和网易,应该也没有防止图片被盗链.

防盗链没机制没接触过学习中

@nqdy666 你这是忘了清缓存

@alsotang 恕我愚昧, 忘了清缓存这个和图片反盗链啥关系哇?

@nqdy666 人家即使防止了盗链,但如果你的浏览器有缓存的话,看到相同的 url 也就直接使用缓存的了。 所以在你看来,【qq和网易,应该也没有防止图片被盗链】

我上面发的这个图片不行?直接打开就可以,怎么破?

@liangweidong 我直接打开也错误啊

untitled1.png

@alsotang 刷新一下会不会出来

回到顶部