教你突破基于HTTP_REFERER的防盗链的方法

其实防盗链这个技术并不复杂,目前基本就是在服务器端判断HTTP_REFERER的位置,如果不是来自本站自身,则拒绝输出详细。

那么如果考虑突破防盗链的措施,就需要考虑在HTTPREFERER上面做手脚了。PHP 脚本中对应的变量是$SERVER[‘HTTPREFERER‘] ,它存储了 HTTPREFERER 的值。

由于直接访问目标URL资源已经被上述防盗链的措施给屏蔽,所以我们需要个类似网关的玩意去获取。说白了就是编写已经包装过的HTTP头的 PHP 脚本。

下面是简单的函数实现:

  1. function getRemoteFile($url, $refer = ‘‘) {
  2. $option = array(
  3. ‘http‘ => array(
  4. ‘header‘ => "Referer:$refer")
  5. );
  6. $context = stream_context_create($option);
  7. return file_get_contents($url, false, $context);
  8. }

这是个比较简单的函数,其功能就是伪造 Referer (使用 streamcontextcreate 函数 )然后获取对方的数据(使用 filegetcontents,需要开启 allowurlfopen )。

如果想「复杂」一点,可以使用 sockets 扩展 ,这不在这里的讨论范围以内。

另外,再提供个获取主机名的正则函数

  1. function getHost($url) {
  2. $result = preg_match(‘/^http:\/\/([\d|\w|\.]+)\//‘, $url, $matches);
  3. if (sizeof($matches) >= 2)  {
  4. return $matches[1];
  5. } else {
  6. return null;
  7. }
  8. }

再进一步的扩展,可以封装成脚本,然后譬如调用

  1. http://127.0.0.1/proxy.php?url=http://i.am/img

就可以获取那些开启防盗链措施的链接了。

时间: 2024-08-01 14:49:36

教你突破基于HTTP_REFERER的防盗链的方法的相关文章

微信图片反防盗链的方法

微信图片反防盗链的方法(此图片来自微信公众平台,未经允许不可饮用) (未找到出处,如有侵犯,请及时告知,谢谢) 因为在<img>标签中引用微信的图片 <?php $img = "http://mmbiz.qpic.cn/mmbiz /ibbmVK4uC7iacR4KGWnyJHvQxl276DK6eGibiafBFTLObjBtKU9hGZoiaaiaD49r4u9otkQzCGAPAbWlPVzrpyCRaCVA/0"; ?> <img src=&quo

nginx服务器图片防盗链的方法

nginx服务器图片防盗链的方法<pre> location ~* \.(gif|jpg|png|jpeg)$ { expires 30d; valid_referers *.shuchengxian.com www.shuchengxian.com; if ($invalid_referer) { rewrite ^/ http://www.shuchengxian.cn/404.jpg; } }</pre>代码解释: <pre>//其中“gif|jpg|jpeg|p

SpringBoot集成FastDFS+Nginx整合基于Token的防盗链

为什么要用SpringBoot? SpringBoot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置.通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者. 创建独立的Spring应用程序 嵌入的Tomcat,无需部署WAR文件 简化Maven配置 自动配置Spring 提供生产就绪

几种图片防盗链的方法

研究了一下图片防盗链,没时间总结,贴上几遍文章大家看看吧. http://paranimage.com/10-kinds-of-anti-picture-method-of-navigating-to-wwwsinacomcn/ http://davidwalsh.name/mootools-image-protector-dwprotector http://davidwalsh.name/image-protector-plugin-for-jquery 使用filter进行防盗链 http

防盗链设置及一些绕过防盗链的方法

再nginx集群内设置防盗链 location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$                          {                                  valid_referers none blocked *.tappal.com tappal.com;                                  if  ($invalid_referer) {                      

一行代码实现防盗链!

网站最不希望的就是被采集和盗链,今天来介绍一下防盗链.实现防盗链功能其实很简单,此处所讲的只是其中一种方式.费话不多说,代码如下: <?php header("content-type:text/html;charset=utf-8"); //基于http解决防盗链问题 $referer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : ''; if($referer !='' && st

asp.net MVC 网站图片防盗链的几种方法

目录 1. 通过 URL Rewrite Module 组件 2. 通过 nginx 图片防盗链 3.自定义 HttpHandler 处理 4. 通过 MVC 自定义路由规则防盗链 5. 通过 MVC 自定义 RouteHandler 防盗链 6. 通过 HttpModModule 防盗链 7. 涉及知识点,相关资源 自己网站上的图片被别的网站盗用是一件很令人厌恶的事情,下面是处理图片盗链的几种方法. 在这里先交代一下环境,我用的是 MVC4 ,IIS7 应用程序池为集成模式,以下配置都是基于此

CentOS7.4——Apache优化应用四(防盗链)

Apache优化应用四(防盗链)目录第一部分 准备工作第二部分 安装Apache服务第三部分 配置盗链第四部分 配置基于域名的防盗链 第一部分 准备工作一:服务器两台:Linux系统-CentOS 7.4:IP地址:192.168.80.10(合法服务器)192.168.80.40(非法盗链服务器)注意:两台服务器都要安装Apahce服务 客户端:以WIN7为例,测试验证结果,与服务器在同一网段:IP地址:192.168.80.2 二:准备压缩包 //apr-1.6.2.tar.gz和apr-u

Apache和Nginx防盗链的几种配置方法

要实现防盗链,我们就必须先理解盗链的实现原理,提到防盗链的实现原理就不得不从HTTP协议说起,在HTTP协议中,有一个表头字段叫 referer,采用URL的格式来表示从哪儿链接到当前的网页或文件.换句话说,通过referer,网站可以检测目标网页访问的来源网页,如果是资源 文件,则可以跟踪到显示它的网页地址.有了referer跟踪来源就好办了,这时就可以通过技术手段来进行处理,一旦检测到来源不是本站即进行阻止或者返 回指定的页面. Nginx防盗链的配置 1.nginx针对文件类型的防盗链配置