图片防盗链实现的原理:
图片防盗链技术是指在通过链接访问图片时,检查了图片访问请求的头部信息中的referer,如果请求中的referer信息不满足被访问网站的设置则无法获取图片。
知道了原理后想办法如何解决:
一.将自己网站http升级为https:
因为https的访问是经过加密的,所以如果自己的网站是https访问的站点,那么访问他人网站图片请求时,他人网站时无法取得请求头部中的referer信息的,这样可以绕过referer的检测(前提是被访问网站允许没有referer头部信息的请求访问图片,就比如浏览器直接键入图片地址访问,这样的访问是没有referer信息的,所以使用本方法之前,确认使用图片防盗链的网站,是否可以直接在浏览器中键入图片链接访问到图片,如果可以,该种方法是有效的)。
二.使用代理:
有一些代理网站可以解决图片防盗链的问题,将图片链接发给代理网站,代理网站会返回图片,一般如http://xxxxxx.com?imgurl=http://yyyyyy.com/image.jpg,这样的访问。
三.自己写代理:
自己并没有找到一个能用的代理网站所以只能自己写一个,因为自己的网站是使用Django搭建的,所以语言使用的Python,这样就用爬虫构建访问请求,手动构建referer信息,抓取图片链接的图片数据,并将数据放回给访问的浏览器,代码如下:
def proxyimg(request):
if request.method == ‘GET’:
url = request.GET[‘imgurl’]
u = urllib.urlopen(url)
return HttpResponse(u.read(), content_type=’image/jpeg’)
这样访问使用图片防盗链的图片就用自己的服务器中转下从而获取到图片数据。
四、
<meta name=”referrer” content=”never”>
在meta 里面加上这一句 做一个伪签名 可以绕过防盗链
大家可以试试