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


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 validation插件表单验证的一个例子
Mar 03 Javascript
SOSO地图API使用(一)在地图上画圆实现思路与代码
Jan 15 Javascript
button没写type=button会导致点击时提交
Mar 06 Javascript
使用命令对象代替switch语句的写法示例
Feb 28 Javascript
基于jQuery和CSS3制作数字时钟附源码下载(jquery篇)
Nov 24 Javascript
jQuery插件之Tocify动态节点目录菜单生成器附源码下载
Jan 08 Javascript
jQuery电话号码验证实例
Jan 05 Javascript
vue2的todolist入门小项目的详细解析
May 11 Javascript
vue与bootstrap实现时间选择器的示例代码
Aug 26 Javascript
Angular6使用forRoot() 注册单一实例服务问题
Aug 27 Javascript
基于JavaScript实现单例模式
Oct 30 Javascript
详解Vue3 Composition API中的提取和重用逻辑
Apr 29 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 + nginx项目中的权限详解
2017/05/23 PHP
Laravel中错误与异常处理的用法示例
2018/09/16 PHP
event.X和event.clientX的区别分析
2011/10/06 Javascript
asp.net网站开发中用jquery实现滚动浏览器滚动条加载数据(类似于腾讯微博)
2012/03/14 Javascript
onclick与listeners的执行先后问题详细解剖
2013/01/07 Javascript
jQuery登陆判断简单实现代码
2013/04/21 Javascript
移动设备web开发首选框架:zeptojs介绍
2015/01/29 Javascript
在linux中使用包管理器安装node.js
2015/03/13 Javascript
JS访问SWF的函数用法实例
2015/07/01 Javascript
AngularJS入门教程之AngularJS表达式
2016/04/18 Javascript
js正则表达式replace替换变量方法
2016/05/21 Javascript
bootstrap下拉框动态赋值方法
2018/08/10 Javascript
mpvue+vuex搭建小程序详细教程(完整步骤)
2018/09/30 Javascript
前端深入理解Typescript泛型概念
2020/03/09 Javascript
解决vuecli3中img src 的引入问题
2020/08/04 Javascript
[53:13]2014 DOTA2国际邀请赛中国区预选赛5.21 DT VS LGD-GAMING
2014/05/22 DOTA
简单的编程0基础下Python入门指引
2015/04/01 Python
python简单分割文件的方法
2015/07/30 Python
python实现微信发送邮件关闭电脑功能
2018/02/22 Python
在python3.5中使用OpenCV的实例讲解
2018/04/02 Python
使用python爬虫获取黄金价格的核心代码
2018/06/13 Python
python 标准差计算的实现(std)
2019/07/29 Python
python序列化与数据持久化实例详解
2019/12/20 Python
Keras实现将两个模型连接到一起
2020/05/23 Python
scrapy-splash简单使用详解
2021/02/21 Python
世界首屈一指的在线男士内衣权威:HisRoom
2017/08/05 全球购物
程序集与命名空间有什么不同
2014/07/25 面试题
秘书行业自我鉴定范文
2013/12/30 职场文书
电脑饰品店的创业计划书
2014/01/21 职场文书
创新比赛获奖感言
2014/02/13 职场文书
《油菜花开了》教学反思
2014/02/22 职场文书
大学教师师德师风演讲稿
2014/08/22 职场文书
整改通知书格式
2015/04/22 职场文书
幼儿园家长工作总结2015
2015/04/25 职场文书
美元符号 $
2022/02/17 杂记
python实现手机推送 代码也就10行左右
2022/04/12 Python