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


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 函数速查表
Feb 07 Javascript
actionscript与javascript的区别
May 25 Javascript
基于jquery实现漂亮的动态信息提示效果
Aug 02 Javascript
一个JS的日期格式化算法示例
Jul 31 Javascript
详解JavaScript对象类型
Jun 16 Javascript
Vue.js系列之项目搭建(1)
Jan 03 Javascript
React如何将组件渲染到指定DOM节点详解
Sep 08 Javascript
vue使用keep-alive实现数据缓存不刷新
Oct 21 Javascript
微信小程序导航栏滑动定位功能示例(实现CSS3的positionsticky效果)
Jan 24 Javascript
JavaScript中AOP的实现与应用
May 06 Javascript
小程序简单两栏瀑布流效果的实现
Dec 18 Javascript
Vue中的nextTick作用和几个简单的使用场景
Jan 25 Vue.js
基于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设计模式 Interpreter(解释器模式)
2011/06/26 PHP
PHP函数import_request_variables()用法分析
2016/04/02 PHP
微信支付PHP SDK ―― 公众号支付代码详解
2016/09/13 PHP
Yii2选项卡的简单使用
2017/05/26 PHP
Laravel中GraphQL接口请求频率实战记录
2020/09/01 PHP
IE8提示Invalid procedure call or argument 异常的解决方法
2012/09/30 Javascript
Jquery操作js数组及对象示例代码
2014/05/11 Javascript
JS实现带关闭功能的阿里妈妈网站顶部滑出banner工具条代码
2015/09/17 Javascript
学习vue.js计算属性
2016/12/03 Javascript
jQuery实现简单漂亮的Nav导航菜单效果
2017/03/29 jQuery
Javascript实现找不同色块的游戏
2017/07/17 Javascript
jQuery实现点击图标div循环放大缩小功能
2018/09/30 jQuery
详解vantUI框架在vue项目中的应用踩坑
2018/12/06 Javascript
spring+angular实现导出excel的实现代码
2019/02/27 Javascript
微信小程序实现上传图片裁剪图片过程解析
2019/08/22 Javascript
[06:07]DOTA2-DPC中国联赛3月5日Recap集锦
2021/03/11 DOTA
[01:19:46]DOTA2-DPC中国联赛 正赛 SAG vs DLG BO3 第一场 2月28日
2021/03/11 DOTA
跟老齐学Python之编写类之四再论继承
2014/10/11 Python
Python实现二分法算法实例
2015/02/02 Python
python使用正则表达式分析网页中的图片并进行替换的方法
2015/03/26 Python
python 系统调用的实例详解
2017/07/11 Python
tensorflow 恢复指定层与不同层指定不同学习率的方法
2018/07/26 Python
pycharm 取消默认的右击运行unittest的方法
2018/11/29 Python
Django 配置多站点多域名的实现步骤
2019/05/17 Python
Python简单处理坐标排序问题示例
2019/07/11 Python
python+selenium+Chrome options参数的使用
2020/03/18 Python
波兰最大的宠物用品网上商店:FERA.PL
2019/08/11 全球购物
国贸类专业毕业生的求职信分享
2013/12/08 职场文书
入党综合考察材料
2014/06/02 职场文书
证券公司客户经理岗位职责
2015/04/09 职场文书
统计员岗位职责范本
2015/04/14 职场文书
企业财务管理制度范本
2015/08/04 职场文书
2016年清明节红领巾广播稿
2015/12/17 职场文书
创业计划书之家政服务
2019/09/18 职场文书
MySQL脏读,幻读和不可重复读
2022/05/11 MySQL
js前端面试常见浏览器缓存强缓存及协商缓存实例
2022/06/21 Javascript