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


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 相关文章推荐
javascript Math.random()随机数函数
Nov 04 Javascript
原生javascript图片自动或手动切换示例附演示源码
Sep 04 Javascript
JQuery记住用户名和密码的具体实现
Apr 04 Javascript
jQuery中position()方法用法实例
Jan 16 Javascript
c#程序员对TypeScript的认识过程
Jun 19 Javascript
jQuery siblings()用法实例详解
Apr 26 Javascript
CSS+jQuery实现简单的折叠菜单
Dec 20 Javascript
Javascript中for循环语句的几种写法总结对比
Jan 23 Javascript
深入理解Vue nextTick 机制
Apr 28 Javascript
vue中 this.$set的用法详解
Sep 06 Javascript
JS中锚点链接点击平滑滚动并自由调整到顶部位置
Feb 06 Javascript
Angular CLI发布路径的配置项浅析
Mar 29 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
下载文件的点击数回填
2006/10/09 PHP
深入php数据采集的详解
2013/06/02 PHP
php class中public,private,protected的区别以及实例分析
2013/06/18 PHP
Yii视图CGridView实现操作按钮定义地址示例
2016/07/14 PHP
php实现水印文字和缩略图的方法示例
2016/12/29 PHP
php使用PDO事务配合表格读取大量数据插入操作实现方法
2017/02/16 PHP
PHP使用PDO访问oracle数据库的步骤详解
2017/09/29 PHP
JQuery 风格的HTML文本转义
2009/07/01 Javascript
jQuery div层的放大与缩小简单实现代码
2013/03/28 Javascript
jQuery插件bgStretcher.js实现全屏背景特效
2015/06/05 Javascript
jquery实现鼠标滑过后动态图片提示效果实例
2015/08/10 Javascript
jQuery短信验证倒计时功能实现方法详解
2016/05/25 Javascript
简单谈谈Vue 模板各类数据绑定
2016/09/25 Javascript
javascript中获取元素标签中间的内容的实现方法
2016/10/08 Javascript
JavaScript中数组的各种操作的总结(必看篇)
2017/02/13 Javascript
详解JS异步加载的三种方式
2017/03/07 Javascript
使用clipboard.js实现复制功能的示例代码
2017/10/16 Javascript
angularjs 获取默认选中的单选按钮的value方法
2018/02/28 Javascript
浅谈Vue下使用百度地图的简易方法
2018/03/23 Javascript
详解Angular路由之路由守卫
2018/05/10 Javascript
ES6之模版字符串的具体使用
2018/05/17 Javascript
python正常时间和unix时间戳相互转换的方法
2015/04/23 Python
python 爬取微信文章
2016/01/30 Python
老生常谈python的私有公有属性(必看篇)
2017/06/09 Python
详解Python安装tesserocr遇到的各种问题及解决办法
2019/03/07 Python
python爬虫 基于requests模块的get请求实现详解
2019/08/20 Python
python 计算方位角实例(根据两点的坐标计算)
2020/01/17 Python
解决Python logging模块无法正常输出日志的问题
2020/02/21 Python
PyQt5如何将.ui文件转换为.py文件的实例代码
2020/05/26 Python
几款好用的python工具库(小结)
2020/10/20 Python
体育专业个人的求职信范文
2013/09/21 职场文书
学生学习总结的自我评价
2013/10/22 职场文书
服务员岗位职责
2014/01/29 职场文书
公司担保书格式范文
2014/05/12 职场文书
酒店管理专业毕业生自我鉴定
2014/09/29 职场文书
2014年党小组工作总结
2014/12/20 职场文书