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


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入门·动态的时钟,显示完整的一些方法,新年倒计时
Oct 01 Javascript
JS文本框追加多个下拉框的值的简单实例
Jul 12 Javascript
Jquery中children与find之间的区别详细解析
Nov 29 Javascript
jquery easyui 结合jsp简单展现table数据示例
Apr 18 Javascript
javascript下拉列表中显示树形菜单的实现方法
Nov 17 Javascript
jquery Easyui Datagrid实现批量操作(编辑,删除,添加)
Feb 20 Javascript
使用socket.io实现简单聊天室案例
Jan 02 Javascript
详解ES6 Symbol 的用途
Oct 14 Javascript
vue-router实现嵌套路由的讲解
Jan 19 Javascript
Preload基础使用方法详解
Feb 03 Javascript
基于JS实现操作成功之后自动跳转页面
Sep 25 Javascript
js调用网络摄像头的方法
Dec 05 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手册及PHP编程标准
2006/12/17 PHP
php Rename 更改文件、文件夹名称
2011/05/24 PHP
深入PHP中的HashTable结构详解
2013/06/13 PHP
php实现按文件名搜索文件的远程文件查找器
2014/05/10 PHP
smarty模板引擎从配置文件中获取数据的方法
2015/01/22 PHP
十幅图告诉你什么是PHP引用
2015/02/22 PHP
PHP加密解密函数详解
2015/10/28 PHP
php微信开发之上传临时素材
2016/06/24 PHP
PHP实现广度优先搜索算法(BFS,Broad First Search)详解
2017/09/16 PHP
360搜索引擎自动收录php改写方案
2018/04/28 PHP
extJs 常用到的增,删,改,查操作代码
2009/12/28 Javascript
利用jQuery插件扩展识别浏览器内核与外壳的类型和版本的实现代码
2011/10/22 Javascript
当自定义数据属性为json格式字符串时jQuery的data api问题探讨
2013/02/18 Javascript
IE6下javasc#ipt:void(0) 无效的解决方法
2013/12/23 Javascript
js带前后翻页的图片切换效果代码分享
2015/09/08 Javascript
jQuery中借助deferred来请求及判断AJAX加载的实例讲解
2016/05/24 Javascript
HTML5 JS压缩图片并获取图片BASE64编码上传
2020/11/16 Javascript
微信小程序 122100版本更新问题解决方案
2016/12/22 Javascript
vue单个组件实现无限层级多选菜单功能
2018/04/10 Javascript
vue使用codemirror的两种用法
2019/08/27 Javascript
微信小程序地图绘制线段并且测量(实例代码)
2020/01/02 Javascript
Python最基本的输入输出详解
2015/04/25 Python
python实现单线程多任务非阻塞TCP服务端
2017/06/13 Python
Django实现全文检索的方法(支持中文)
2018/05/14 Python
python监控文件并且发送告警邮件
2018/06/21 Python
django如何自己创建一个中间件
2019/07/24 Python
Python对列表的操作知识点详解
2019/08/20 Python
python GUI库图形界面开发之PyQt5动态加载QSS样式文件
2020/02/25 Python
html5中为audio标签增加停止按钮动作实现方法
2013/01/04 HTML / CSS
德国家具折扣店:POCO
2020/02/28 全球购物
网络工程专业毕业生推荐信
2013/10/28 职场文书
2014年行政后勤工作总结
2014/12/06 职场文书
2015年食堂工作总结报告
2015/04/23 职场文书
入党介绍人意见2015
2015/06/01 职场文书
2016年共产党员公开承诺书
2016/03/24 职场文书
Redis高级数据类型Hyperloglog、Bitmap的使用
2021/05/24 Redis