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


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 相关文章推荐
取键盘键位ASCII码的网页
Jul 30 Javascript
javascript 框架小结 个人工作经验
Jun 13 Javascript
jquery必须知道的一些常用特效方法及使用示例(整理)
Jun 24 Javascript
JavaScript Math.ceil() 函数使用介绍
Dec 11 Javascript
jQuery实现可用于博客的动态滑动菜单
Mar 09 Javascript
tuzhu_req.js 实现仿百度图片首页效果
Aug 11 Javascript
jQuery中事件与动画的总结分享
May 24 Javascript
JS正则表达式修饰符global(/g)用法分析
Dec 27 Javascript
详解Angular-Cli中引用第三方库
May 21 Javascript
vue组件通信传值操作示例
Jan 08 Javascript
webpack4手动搭建Vue开发环境实现todoList项目的方法
May 16 Javascript
layer iframe 设置关闭按钮的方法
Sep 12 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从二维数组得到N层分类树的实现代码
2016/10/11 PHP
PHP下 Mongodb 连接远程数据库的实例代码
2017/08/30 PHP
PHP设计模式之委托模式定义与用法简单示例
2018/08/13 PHP
共享自己写一个框架DreamScript
2007/01/20 Javascript
返回对象在当前级别中是第几个元素的实现代码
2011/01/20 Javascript
关于JS管理作用域的问题
2013/04/10 Javascript
在javascript中关于节点内容加强
2013/04/11 Javascript
jquery为页面增加快捷键示例
2014/01/31 Javascript
jquery checkbox 勾选的bug问题解决方案与分析
2014/11/13 Javascript
JavaScript获取文本框内选中文本的方法
2015/02/20 Javascript
原生js封装的一些jquery方法(详解)
2016/09/20 Javascript
input输入密码变黑点密文的实现方法
2017/01/09 Javascript
简单实现js轮播图效果
2017/07/14 Javascript
详解使用React全家桶搭建一个后台管理系统
2017/11/04 Javascript
vue-cli项目中使用Mockjs详解
2018/05/14 Javascript
一个Vue页面的内存泄露分析详解
2018/06/25 Javascript
vue+echarts实现动态绘制图表及异步加载数据的方法
2018/10/17 Javascript
vue2.0+vue-router构建一个简单的列表页的示例代码
2019/02/13 Javascript
深入了解js原型模式
2019/05/30 Javascript
jQuery实现移动端扭蛋机抽奖
2020/11/08 jQuery
基于python的Tkinter实现一个简易计算器
2015/12/31 Python
python爬虫实战之爬取京东商城实例教程
2017/04/24 Python
查看TensorFlow checkpoint文件中的变量名和对应值方法
2018/06/14 Python
python定时关机小脚本
2018/06/20 Python
解决paramiko执行命令超时的问题
2020/04/16 Python
英国50岁以上人群的交友网站:Ourtime
2018/03/28 全球购物
跑步、骑行和铁人三项的高性能眼镜和服装:ROKA
2018/07/06 全球购物
美国在线鞋类零售商:LifeStride
2019/06/09 全球购物
linux比较文件内容的命令是什么
2015/09/23 面试题
护士思想汇报
2014/01/12 职场文书
小学生读书感言
2014/02/12 职场文书
出生证明公证书
2014/04/09 职场文书
2014年五四青年节演讲稿范文
2014/04/22 职场文书
好段摘抄大全(48句)
2019/08/08 职场文书
解析python中的jsonpath 提取器
2022/01/18 Python
数据设计之权限的实现
2022/08/05 MySQL