Home > Backend Development > PHP Tutorial > php应用篇-百度图片的防盗链

php应用篇-百度图片的防盗链

WBOY
Release: 2016-06-23 13:51:45
Original
949 people have browsed it

众所周知,一个网站如果的图片流量很占用网络带宽,因此,防止图片的被盗连就显得重中之重。这里,简单讲解下百度如何防止图片的盗链的原理,接着介绍下如何通过php来盗取图片,正所谓,道高一尺魔高一丈,防守和进攻总是不断地相互促进发展。


首先,简单介绍下盗链,按照百度百科的介绍“盗链是指服务提供商自己不提供服务的内容,通过技术手段绕过其它有利益的最终用户界面(如广告),直接在自己的网站上向最终用户提供其它服务提供商的服务内容,骗取最终用户的浏览和点击率。受益者不提供资源或提供很少的资源,而真正的服务提供商却得不到任何的收益。”。所以,这里图片盗链就是在自己的服务器上引用百度的图片结果,而不把图片放到自己的服务器上,这样就减少了服务器的带宽了。


举个例子:给出个百度图片的url:http://c.hiphotos.baidu.com/image/w%3D210/sign=ed30880babec8a13141a50e1c7029157/d52a2834349b033be1a9503e17ce36d3d539bd35.jpg


如果直接通过浏览器访问,我们就会得到真实的图片,如下图:



但是如果我们在自己的服务器上通过php应用篇-百度图片的防盗链来获取它的内容。


那么我们就会得到下面的图片:



这里因为我们请求图片的时候http请求的header中有Referer:这个字段,他标示了我们不是百度自己的服务器,所以请求不被正常处理,这里我们就可以通过php中的curl扩展来伪造http请求从而得到正确的图片。代码如下:


<?php $url = 'http://c.hiphotos.baidu.com/image/w%3D210/sign=ed30880babec8a13141a50e1c7029157/d52a2834349b033be1a9503e17ce36d3d539bd35.jpg';//$_GET["url"];$dir = pathinfo($url);$host = $dir['dirname'];$refer = $host.'/';$ch = curl_init($url);curl_setopt ($ch, CURLOPT_REFERER, $refer);curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);//Activation can modify the pagecurl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);$data = curl_exec($ch);curl_close($ch);header("Content-type: image/jpeg");print( $data );
Copy after login

经过这么处理之后,我们就可以盗取到百度的图片了。


Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template