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


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 新浪网易的评论块制作
Jul 01 Javascript
JS判断不同分辨率调用不同的CSS样式文件实现思路及测试代码
Jan 23 Javascript
javascript拖拽应用实例
Mar 25 Javascript
基于AngularJS实现iOS8自带的计算器
Sep 12 Javascript
图文详解Javascript中的上下文和作用域
Feb 15 Javascript
详解wow.js中各种特效对应的类名
Sep 13 Javascript
原生js封装添加class,删除class的实例
Nov 06 Javascript
利用JS判断客户端类型你应该知道的四种方法
Dec 22 Javascript
JS代码实现电脑配置检测功能
Mar 21 Javascript
解决Js先触发失去焦点事件再执行点击事件的问题
Aug 30 Javascript
基于leaflet.js实现修改地图主题样式的流程分析
May 15 Javascript
Vue使用axios引起的后台session不同操作
Aug 14 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
一个用于MySQL的PHP XML类
2006/10/09 PHP
PHP递归调用数组值并用其执行指定函数的方法
2015/04/01 PHP
php获取英文姓名首字母的方法
2015/07/13 PHP
PHP PDOStatement::getColumnMeta讲解
2019/02/01 PHP
为javascript添加String.Format方法
2020/08/11 Javascript
前端开发的开始---基于面向对象的Ajax类
2010/09/17 Javascript
javascript中关于&amp;&amp; 和 || 表达式的小技巧分享
2015/04/10 Javascript
详细介绍jQuery.outerWidth() 函数具体用法
2015/07/20 Javascript
JavaScript实现表格快速变色效果代码
2015/08/19 Javascript
ES6的新特性概览
2016/03/10 Javascript
php基于redis处理session的方法
2016/03/14 Javascript
jQuery获取file控件中图片的宽高与大小
2016/08/04 Javascript
Vue网页html转换PDF(最低兼容ie10)的思路详解
2017/08/24 Javascript
Node.js微信 access_token ( jsapi_ticket ) 存取与刷新的示例
2017/09/30 Javascript
JavaScript 正则命名分组【推荐】
2018/06/07 Javascript
vue登录页面cookie的使用及页面跳转代码
2019/07/10 Javascript
跟老齐学Python之深入变量和引用对象
2014/09/24 Python
python3 图片referer防盗链的实现方法
2018/03/12 Python
对python3 urllib包与http包的使用详解
2018/05/10 Python
django的登录注册系统的示例代码
2018/05/14 Python
Python设计模式之享元模式原理与用法实例分析
2019/01/11 Python
Python+pyplot绘制带文本标注的柱状图方法
2019/07/08 Python
python 求某条线上特定x值或y值的点坐标方法
2019/07/09 Python
python元组的概念知识点
2019/11/19 Python
Python 面向对象之封装、继承、多态操作实例分析
2019/11/21 Python
TensorFlow2.0矩阵与向量的加减乘实例
2020/02/07 Python
美国顶级品牌男士大码服装店:DXL
2017/08/30 全球购物
俄罗斯玩具、儿童用品、儿童服装和鞋子网上商店:MyToys.ru
2019/10/14 全球购物
综合办公室个人的自我评价
2013/12/22 职场文书
幼儿园毕业家长感言
2014/02/10 职场文书
致标枪运动员加油稿
2014/02/15 职场文书
干部竞争上岗演讲稿
2014/09/11 职场文书
就业意向协议书
2015/01/29 职场文书
中学生综合素质自我评价
2015/03/06 职场文书
pytorch fine-tune 预训练的模型操作
2021/06/03 Python
Python可变集合和不可变集合的构造方法大全
2021/12/06 Python