详解微信图片防盗链“此图片来自微信公众平台 未经允许不得引用”的解决方案


Posted in Javascript onApril 04, 2019

已经获取微信公众号发布的图片,但不能正常显示 ,提示:此图片来自微信公众平台 未经允许不得引用。

详解微信图片防盗链“此图片来自微信公众平台 未经允许不得引用”的解决方案 

这是怎么回事呢?

遇到这种问题是因为微信公众平台对图片采用了防盗链设置,微信对外提供了API接口,让我们可以通过授权的方式获取到自己公众号里面的文章,或者你也可以通过爬虫去抓取微信的文章,但是微信的图片默认是不允许外部调用的

那该怎么解决这种问题呢?

这里我找到了两种方案

第一种

在JS中提前把图片加载到本地,然后从本地缓存中读取图片

var showImg = function (url) {
 var frameid = 'frameimg' + Math.random();
 window.img = '<img id="img" src=\'' + url + '?' + Math.random() + '\' /><script>window.onload = function() { parent.document.getElementById(\'' + frameid + '\').height = document.getElementById(\'img\').height+\'px\'; }<' + '/script>';
 return '<iframe id="' + frameid + '" src="javascript:parent.img;" frameBorder="0" scrolling="no" width="100%"></iframe>';
}

通过各种iframe,form等来跳过防盗链机制,但是这种方法,对代码的结构影响很大,对一些移动类库兼容性不太好。

第二种

运用用后台方法

<img class="form_logo" src="{:U('showMpImg')}?url={$vo.url}" style="max-width: none" width="160" height="100">
//显示图片
  public function showMpImg($url){
    header('content_type:image/jpeg');
    echo file_get_contents($url);
  }

第三种,用php模拟浏览器请求

$url = $request->input('url');
$ch = curl_init();
$httpheader = array(
 'Host' => 'mmbiz.qpic.cn',
 'Connection' => 'keep-alive',
 'Pragma' => 'no-cache',
 'Cache-Control' => 'no-cache',
 'Accept' => 'textml,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8',
 'User-Agent' => 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.89 Safari/537.36',
 'Accept-Encoding' => 'gzip, deflate, sdch',
 'Accept-Language' => 'zh-CN,zh;q=0.8,en;q=0.6,zh-TW;q=0.4'
);
$options = array(
 CURLOPT_HTTPHEADER => $httpheader,
 CURLOPT_URL => $url,
 CURLOPT_TIMEOUT => 5,
 CURLOPT_FOLLOWLOCATION => 1,
 CURLOPT_RETURNTRANSFER => true
);
curl_setopt_array( $ch , $options );
$result = curl_exec( $ch );
curl_close($ch);
header('Content-type: image/jpg');
echo $result;
exit;

可看到结果,

详解微信图片防盗链“此图片来自微信公众平台 未经允许不得引用”的解决方案

目前我用第二种方法测试过,代码简单易懂,建议使用。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
IE6与IE7中,innerHTML获取param的区别
Mar 15 Javascript
JavaScript中的Array对象使用说明
Jan 17 Javascript
jquery 操作DOM案例代码分享
Apr 05 Javascript
jquery取消选择select下拉框示例代码
Feb 22 Javascript
js库Modernizr的介绍和使用
May 07 Javascript
将JavaScript的jQuery库中表单转化为JSON对象的方法
Nov 17 Javascript
Jquery1.9.1源码分析系列(六)延时对象应用之jQuery.ready
Nov 24 Javascript
JavaScript实现三级联动菜单效果
Aug 16 Javascript
详解JS数组Reduce()方法详解及高级技巧
Aug 18 Javascript
vue-cli中的babel配置文件.babelrc实例详解
Feb 22 Javascript
vue两个组件间值的传递或修改方式
Jul 04 Javascript
vue封装swiper代码实例解析
Oct 08 Javascript
基于Vue+elementUI实现动态表单的校验功能(根据条件动态切换校验格式)
Apr 04 #Javascript
vue学习笔记五:在vue项目里面使用引入公共方法详解
Apr 04 #Javascript
JavaScript多种页面刷新方法小结
Apr 04 #Javascript
详解easyui 切换主题皮肤
Apr 04 #Javascript
jQuery分组选择器简单用法示例
Apr 04 #jQuery
qrcode生成二维码微信长按无法识别问题的解决
Apr 04 #Javascript
jQuery实现带3D切割效果的轮播图功能示例【附源码下载】
Apr 04 #jQuery
You might like
php学习笔记 [预定义数组(超全局数组)]
2011/06/09 PHP
php 操作调试的方法
2012/07/12 PHP
Laravel框架实现调用百度翻译API功能示例
2019/05/30 PHP
js解析与序列化json数据(三)json的解析探讨
2013/02/01 Javascript
Nodejs关于gzip/deflate压缩详解
2015/03/04 NodeJs
AngularJs解决跨域问题案例详解(简单方法)
2016/05/19 Javascript
jquery点击切换背景色的简单实例
2016/08/25 Javascript
jQuery实现的浮动层div浏览器居中显示效果
2017/02/03 Javascript
原生JS实现幻灯片
2017/02/22 Javascript
JavaScript中三种常见的排序方法
2017/02/24 Javascript
vue-resourse将json数据输出实例
2017/03/08 Javascript
详解Vue 中 extend 、component 、mixins 、extends 的区别
2017/12/20 Javascript
react-navigation之动态修改title的内容
2018/09/26 Javascript
微信小程序实现的图片保存功能示例
2019/04/24 Javascript
使用js实现一个简单的滚动条过程解析
2019/09/10 Javascript
vue+element-ui JYAdmin后台管理系统模板解析
2020/07/28 Javascript
利用js实现简易红绿灯
2020/10/15 Javascript
JS如何监听div的resize事件详解
2020/12/03 Javascript
Pyhton中防止SQL注入的方法
2015/02/05 Python
Python如何判断数独是否合法
2016/09/08 Python
ubuntu中配置pyqt4环境教程
2017/12/27 Python
浅谈Django中的数据库模型类-models.py(一对一的关系)
2018/05/30 Python
python 应用之Pycharm 新建模板默认添加编码格式-作者-时间等信息【推荐】
2019/06/17 Python
Flask模板引擎之Jinja2语法介绍
2019/06/26 Python
python面试题之列表声明实例分析
2019/07/08 Python
python爬取盘搜的有效链接实现代码
2019/07/20 Python
The North Face北面法国官网:美国著名户外品牌
2019/11/01 全球购物
客服服务心得体会
2013/12/30 职场文书
竞聘上岗演讲
2014/05/19 职场文书
2014超市收银员工作总结
2014/11/13 职场文书
2014年残联工作总结
2014/11/21 职场文书
2014保险公司个人工作总结
2014/12/09 职场文书
社区党员干部承诺书
2015/05/04 职场文书
毕业证明书
2015/06/19 职场文书
《珍珠鸟》教学反思
2016/02/16 职场文书
《艾尔登法环》发布最新「战技」宣传片
2022/04/03 其他游戏