简单解决微信文章图片防盗链问题


Posted in PHP onDecember 17, 2016

微信对外提供了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>';
}

第二种

用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;

两种方法类似,我目前用的JS的方式,测试过可以用

PHP 相关文章推荐
PHP insert语法详解
Jun 07 PHP
php过滤危险html代码
Aug 18 PHP
MySQL的FIND_IN_SET函数使用方法分享
Mar 27 PHP
php实现MySQL数据库备份与还原类实例
Dec 09 PHP
使用PHP接受文件并获得其后缀名的方法
Aug 05 PHP
PHP实现递归无限级分类
Oct 22 PHP
CodeIgniter生成静态页的方法
May 17 PHP
PHP实现的下载远程文件类定义与用法示例
Jul 05 PHP
laravel通过创建自定义artisan make命令来新建类文件详解
Aug 17 PHP
PHP设计模式之装饰器模式实例详解
Feb 07 PHP
thinkPHP框架实现生成条形码的方法示例
Jun 06 PHP
php使用array_chunk函数将一个数组分割成多个数组
Dec 05 PHP
PHP 7.1新特性的汇总介绍
Dec 16 #PHP
浅谈PHP命令执行php文件需要注意的问题
Dec 16 #PHP
PHP+Ajax 检测网络是否正常实例详解
Dec 16 #PHP
php微信公众号开发(4)php实现自定义关键字回复
Dec 15 #PHP
php微信公众号开发(3)php实现简单微信文本通讯
Dec 15 #PHP
php微信公众号开发(2)百度BAE搭建和数据库使用
Dec 15 #PHP
redis查看连接数及php模拟并发创建redis连接的方法
Dec 15 #PHP
You might like
php discuz 主题表和回帖表的设计
2009/03/13 PHP
浅析php中常量,变量的作用域和生存周期
2013/08/10 PHP
ThinkPHP里用U方法调用js文件实例
2015/06/18 PHP
PHP中$GLOBALS与global的区别详解
2019/03/21 PHP
Iframe thickbox2.0使用的方法
2009/03/05 Javascript
基于jquery的模态div层弹出效果
2010/08/21 Javascript
JavaScript高级程序设计(第3版)学习笔记11 内建js对象
2012/10/11 Javascript
获取客户端网卡MAC地址和IP地址实现JS代码
2013/03/17 Javascript
深入理解JavaScript系列(18):面向对象编程之ECMAScript实现
2015/03/05 Javascript
jQuery+css3实现Ajax点击后动态删除功能的方法
2015/08/10 Javascript
vue的传参方式汇总和router使用技巧
2018/05/22 Javascript
node app 打包工具pkg的具体使用
2019/01/17 Javascript
node.js 使用 net 模块模拟 websocket 握手进行数据传递操作示例
2020/02/11 Javascript
VSCode launch.json配置详细教程
2020/06/18 Javascript
pycharm 使用心得(六)进行简单的数据库管理
2014/06/06 Python
使用Django Form解决表单数据无法动态刷新的两种方法
2017/07/14 Python
Python基础学习之时间转换函数用法详解
2019/06/18 Python
Win10系统下安装labelme及json文件批量转化方法
2019/07/30 Python
python右对齐的实例方法
2020/07/05 Python
HTML5 placeholder属性详解
2016/06/22 HTML / CSS
意大利在线药房:Farmacia Loreto Gallo
2019/08/09 全球购物
strstr()的简单实现
2013/09/26 面试题
化学学院毕业生自荐信范文
2013/12/17 职场文书
课程设计心得体会
2013/12/28 职场文书
社会保险接收函
2014/01/12 职场文书
优良学风班总结材料
2014/02/08 职场文书
文秘大学生求职信
2014/02/25 职场文书
护士岗前培训自我评鉴
2014/02/28 职场文书
如何写好建议书
2014/03/13 职场文书
小学生环保标语
2014/06/13 职场文书
公司介绍信范文
2015/01/31 职场文书
黄石寨导游词
2015/02/05 职场文书
电影复兴之路观后感
2015/06/02 职场文书
党员反四风学习心得体会
2016/01/22 职场文书
提升Nginx性能的一些建议
2021/03/31 Servers
mysq启动失败问题及场景分析
2021/07/15 MySQL