zoukankan      html  css  js  c++  java
  • PHP破解防盗链图片正常显示

    通过爬虫获取到了wx的数据之后,其中包含图片,但是当拿到图片链接进行数据展示的时候会提示:“此图片来自...平台未经允许不可引用”

    正常代码:

    <img src="{{d.icon_url}}" width="70" height="70" alt="">

    显示如下:

    原因是加了防盗链。

    如何设置防盗链:

    有自己的主机一般都会设计"防盗链", 其实包括图片防盗链,和下载防盗链等,如:
    1.使用.htaccess设置防盗链

    RewriteEngine on
    RewriteCond %{HTTP_REFERER} !^$
    RewriteCond %{HTTP_REFERER} !^http://(www\.)?jb51.net/.*$ [NC]
    RewriteRule \.(gif|jpg)$ https://www.jb51.net/image.gif [R,L]

    2.nginx设置防盗链

    location ~* \.(gif|jpg|png|swf|flv)$ {
     valid_referers none blocked jb51.net;
     if ($invalid_referer) {
      rewrite ^/ http://jb51.net/234_s.gif;
      #return 404;
     }
    }

    如何破解防盗链:

    但怎么破解防盗链呢? 一般的防盗链是判断来路是否为自己的域名, 我们可以使用 php 内置的 file_get_contents 方法来请求这个图片(当然别的后端语言也有类似的方法), 如:

    //getImg.php?url=目标图片连接
    <?php
    header('Content-type: image/jpeg');
    echo file_get_contents(isset($_GET["url"])?$_GET["url"]:'http://static.jb51.net/images/v1/loading-16-16.gif');
    ?>

    实操:

    我这边实用的thinkphp

    在控制器新增了一个方法:

    public function getimg()
    {
        $utl = $this->request->get("url");
        header('Content-type: image/jpeg');
        echo file_get_contents($utl);
    }

    然后html页面代码:

    <img src="/自己的模块/自己的控制器/getimg?url={{d.icon_url}}" width="70" height="70" alt="">

    这样就识别到了。

  • 相关阅读:
    Android使用SO库时要注意的一些问题
    android studio 生成引用arr
    android studio 改包名
    P2P通信原理与实现(C++)
    unity3d各种OpenFileDialog操作
    使用ffmpeg编码时,如何设置恒定码率,并控制好关键帧I帧间隔
    ffmpeg h264转h265
    照片人脸建模
    自动减面
    Unity3d 5.3.5使用sqlite3
  • 原文地址:https://www.cnblogs.com/T8888/p/15741529.html
Copyright © 2011-2022 走看看