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


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 相关文章推荐
Ubuntu 11.10 安装Node.js的方法
Nov 30 Javascript
jquery实现加载等待效果示例
Sep 25 Javascript
jQuery实现鼠标经过图片预览大图效果
Apr 10 Javascript
jQuery实现控制文字内容溢出用省略号(…)表示的方法
Feb 26 Javascript
使用Bootstrap框架制作查询页面的界面实例代码
May 27 Javascript
jquery 点击元素后,滚动条滚动至该元素位置的方法
Aug 05 Javascript
Bootstrap栅格系统使用方法及页面调整变形的解决方法
Mar 10 Javascript
vuejs点击class变化的实例
Sep 05 Javascript
中高级前端必须了解的JS中的内存管理(推荐)
Jul 04 Javascript
Vuex,iView UI面包屑导航使用扩展详解
Nov 04 Javascript
JS如何在不同平台实现多语言方式
Jul 16 Javascript
vue props default Array或是Object的正确写法说明
Jul 30 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实现curl模拟ftp上传的方法
2015/07/29 PHP
PHP书写格式详解(必看)
2016/05/23 PHP
php获取'/'传参的值简单方法
2017/07/13 PHP
javascript fullscreen全屏实现代码
2009/04/09 Javascript
JSQL SQLProxy 的 php 版本代码
2010/05/05 Javascript
JS中表单的使用小结
2014/01/11 Javascript
实例讲解JavaScript中instanceof运算符的用法
2016/06/08 Javascript
form表单转Json提交的方法(推荐)
2016/09/23 Javascript
利用JS实现文字的聚合动画效果
2017/01/22 Javascript
js数组常用最重要的方法
2018/02/04 Javascript
微信小程序实现自动定位功能
2018/10/31 Javascript
vue-cli配置全局sass、less变量的方法
2019/06/06 Javascript
[06:24]DOTA2 2015国际邀请赛中国区预选赛第二日TOP10
2015/05/27 DOTA
Python导入txt数据到mysql的方法
2015/04/08 Python
Python线程详解
2015/06/24 Python
详解使用python crontab设置linux定时任务
2016/12/08 Python
python中使用psutil查看内存占用的情况
2018/06/11 Python
Django框架模板语言实例小结【变量,标签,过滤器,继承,html转义】
2019/05/23 Python
Python 给定的经纬度标注在地图上的实现方法
2019/07/05 Python
python区分不同数据类型的方法
2019/10/14 Python
python实现操作文件(文件夹)
2019/10/31 Python
浅谈pytorch卷积核大小的设置对全连接神经元的影响
2020/01/10 Python
django rest framework serializers序列化实例
2020/05/13 Python
详解python算法常用技巧与内置库
2020/10/17 Python
比利时家具购买网站:Home24
2019/01/03 全球购物
火山动力Java笔试题
2014/06/26 面试题
产品发布会策划方案
2014/05/12 职场文书
优秀党员学习焦裕禄精神思想汇报范文
2014/09/10 职场文书
生活小常识广播稿
2014/09/16 职场文书
2014乡镇机关党员个人对照检查材料思想汇报
2014/10/09 职场文书
教师节慰问信
2015/02/15 职场文书
2016新年慰问信范文
2015/03/25 职场文书
2015年社区综治工作总结
2015/04/21 职场文书
2016年“我们的节日·重阳节”主题活动总结
2016/04/01 职场文书
css实现两栏布局,左侧固定宽,右侧自适应的多种方法
2021/08/07 HTML / CSS
vue实现省市区联动 element-china-area-data插件
2022/04/22 Vue.js