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


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 ajax load 前进、后退功能
Jun 12 Javascript
JavaScript获取图片真实大小代码实例
Sep 24 Javascript
浅谈nodeName,nodeValue,nodeType,typeof 的区别
Jan 13 Javascript
javascript关于open.window子页面执行完成后刷新父页面的问题分析
Apr 27 Javascript
jQuery解决input超多的表单提交
Aug 10 Javascript
javascript实现密码验证
Nov 10 Javascript
基于EasyUI的基础之上实现树形功能菜单
Jun 28 Javascript
利用ES6的Promise.all实现至少请求多长时间的实例
Aug 28 Javascript
Angular6中使用Swiper的方法示例
Jul 09 Javascript
实例讲解JavaScript截取字符串
Nov 30 Javascript
vue移动端模态框(可传参)的实现
Nov 20 Javascript
小程序点餐界面添加购物车左右摆动动画
Sep 23 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
PHPEXCEL 使用小记
2013/01/06 PHP
支持中文的PHP按字符串长度分割成数组代码
2015/05/17 PHP
php操作mongodb封装类与用法实例
2018/09/01 PHP
PHP设计模式(一)工厂模式Factory实例详解【创建型】
2020/05/02 PHP
巧用replace将文字表情替换为图片
2014/04/17 Javascript
详解XMLHttpRequest(二)响应属性、二进制数据、监测上传下载进度
2016/09/14 Javascript
vue.js学习之递归组件
2016/12/13 Javascript
JS组件系列之MVVM组件构建自己的Vue组件
2017/04/28 Javascript
w3c编程挑战_初级脚本算法实战篇
2017/06/23 Javascript
详解VUE中v-bind的基本用法
2017/07/13 Javascript
vue项目中jsonp跨域获取qq音乐首页推荐问题
2018/05/30 Javascript
玩转Koa之koa-router原理解析
2018/12/29 Javascript
js控制随机数生成概率代码实例
2019/03/21 Javascript
vue 插件的方法代码详解
2019/06/06 Javascript
vue实现滑动切换效果(仅在手机模式下可用)
2020/06/29 Javascript
详解Howler.js Web音频播放终极解决方案
2020/08/23 Javascript
python 实现文件的递归拷贝实现代码
2012/08/02 Python
使用Python脚本来获取Cisco设备信息的示例
2015/05/04 Python
python网络编程之数据传输UDP实例分析
2015/05/20 Python
Python 中的with关键字使用详解
2016/09/11 Python
Python设置在shell脚本中自动补全功能的方法
2018/06/25 Python
python 实现图片旋转 上下左右 180度旋转的示例
2019/01/24 Python
python使用Plotly绘图工具绘制柱状图
2019/04/01 Python
Django实现auth模块下的登录注册与注销功能
2019/10/10 Python
Python脚本如何在bilibili中查找弹幕发送者
2020/06/04 Python
Python中如何添加自定义模块
2020/06/09 Python
Python利用pip安装tar.gz格式的离线资源包
2020/09/14 Python
Muziker英国:中欧最大的音乐家商店
2020/02/05 全球购物
大学新闻系求职信
2014/06/03 职场文书
小学少先队工作总结2015
2015/05/26 职场文书
观看禁毒宣传片后的感想
2015/08/11 职场文书
2016教师政治学习心得体会
2016/01/23 职场文书
html+css实现赛博朋克风格按钮
2021/05/26 HTML / CSS
使用Django实现商城验证码模块的方法
2021/06/01 Python
OpenCV-Python实现轮廓拟合
2021/06/08 Python
Mysql 如何合理地统计一个数据库里的所有表的数据量
2022/04/18 MySQL