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


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 相关文章推荐
jQuery Clone Bug解决代码
Dec 22 Javascript
JS下载文件|无刷新下载文件示例代码
Apr 17 Javascript
JQuery通过AJAX从后台获取信息显示在表格上并支持行选中
Sep 15 Javascript
微信小程序 textarea 组件详解及简单实例
Jan 10 Javascript
JavaScript的继承实现小结
May 07 Javascript
JS常用正则表达式总结【经典】
May 12 Javascript
微信小程序实现手指触摸画板
Jul 09 Javascript
解决vue数组中对象属性变化页面不渲染问题
Aug 09 Javascript
vue 监听屏幕高度的实例
Sep 05 Javascript
vue页面跳转实现页面缓存操作
Jul 22 Javascript
基于vue.js仿淘宝收货地址并设置默认地址的案例分析
Aug 20 Javascript
如何通过Proxy实现JSBridge模块化封装
Oct 22 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和XSS跨站攻击的防范
2007/04/17 PHP
php 数组的一个悲剧?
2011/05/11 PHP
PHP连接access数据库
2015/03/27 PHP
Yii2主题(Theme)用法详解
2016/07/23 PHP
Yii框架实现图片上传的方法详解
2017/05/20 PHP
PHP编程计算文件或数组中单词出现频率的方法
2017/05/22 PHP
php识别翻转iphone拍摄的颠倒图片
2018/05/17 PHP
PHP如何使用cURL实现Get和Post请求
2020/07/11 PHP
&amp;lt;script defer&amp;gt; defer 是什么意思
2009/05/10 Javascript
javascript整除实现代码
2010/11/23 Javascript
javascript 原型链维护和继承详解
2014/11/26 Javascript
如何使用jQuery技术开发ios风格的页面导航菜单
2015/07/29 Javascript
javascript如何操作HTML下拉列表标签
2015/08/20 Javascript
举例说明如何为JavaScript的方法参数设置默认值
2015/11/17 Javascript
jquery使用on绑定a标签无效 只能用live解决
2016/06/02 Javascript
基于jQuery实现顶部导航栏功能
2016/12/27 Javascript
JavaScript使用readAsDataUrl方法预览图片
2017/05/10 Javascript
AngularJS中使用three.js的实例详解
2017/07/21 Javascript
使用vue制作FullPage页面滚动效果
2017/08/21 Javascript
React组件中的this的具体使用
2018/02/28 Javascript
Layui给数据表格动态添加一行并跳转到添加行所在页的方法
2018/08/20 Javascript
js使用swiper实现层叠轮播效果实例代码
2018/12/12 Javascript
js实现简单页面全屏
2019/09/17 Javascript
python实现sublime3的less编译插件示例
2014/04/27 Python
用Python编写一个简单的Lisp解释器的教程
2015/04/03 Python
python框架django基础指南
2016/09/08 Python
CSS3使用transition实现的鼠标悬停淡入淡出
2015/01/09 HTML / CSS
HTML5 Web Database 数据库的SQL语句的使用方法
2012/12/09 HTML / CSS
HTML5中图片之间的缝隙完美解决方法
2017/07/07 HTML / CSS
美国在线眼镜店:GlassesShop
2018/11/15 全球购物
什么是事务?事务有哪些性质?
2012/03/11 面试题
小学开学标语
2014/07/01 职场文书
2014年女职工工作总结
2014/11/27 职场文书
销售员自我评价
2015/03/11 职场文书
投诉信范文
2015/07/02 职场文书
python spilt()分隔字符串的实现示例
2021/05/21 Python