破解某些网站图片的防盗链
 发布于 11 年前  作者 alsotang  46416 次预览  最后一次回复是 8 年前  来自 分享 

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

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

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

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


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

42 回复
Ralph-Wang

试试微博的相册 =,=

图片

zhs077

论坛的 https速度感觉慢啊

jinphen

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

alsotang

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

alsotang

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

alsotang

网易空间的:

tofrookie

奈斯,学习了

coolicer

默默点了举报…

hades

我是来看图的。

struCoder

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

keenwon

百度的一直是参数错误!

Gtskk

test 测试百度图片

Gtskk

360图片测试 测试360图片

Gtskk

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

coordcn

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

最关键是这句话

MiguelValentine

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

alsotang

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

flybears

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

alsotang

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

gloomyzerg

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

alsotang

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

soliury

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

nqdy666

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

Dengshen

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

alsotang

@nqdy666 你这是忘了清缓存

nqdy666

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

alsotang

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

liangweidong

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

alsotang

@liangweidong 我直接打开也错误啊

untitled1.png

liangweidong

@alsotang 刷新一下会不会出来