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


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和ACCESS写聊天室(八)
Oct 09 PHP
PHP+Tidy-完美的XHTML纠错+过滤
Apr 10 PHP
php面向对象 字段的声明与使用
Jun 14 PHP
深入PHP异步执行的详解
Jun 03 PHP
解析dedeCMS验证码的实现代码
Jun 07 PHP
PHP URL路由类实例
Nov 12 PHP
php一行代码获取文件后缀名实例分析
Nov 12 PHP
php简单解析mysqli查询结果的方法(2种方法)
Jun 29 PHP
浅谈php和js中json的编码和解码
Oct 24 PHP
YII中Ueditor富文本编辑器文件和图片上传的配置图文教程
Mar 15 PHP
微信公众号开发之获取位置信息php代码
Jun 13 PHP
Laravel jwt 多表(多用户端)验证隔离的实现
Dec 18 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
5款适合PHP使用的HTML编辑器推荐
2015/07/03 PHP
php实现复制移动文件的方法
2015/07/29 PHP
PHP 生成微信红包代码简单
2016/03/25 PHP
JS location几个方法小姐
2008/07/09 Javascript
JS中==与===操作符的比较
2009/03/21 Javascript
return false,对阻止事件默认动作的一些测试代码
2010/11/17 Javascript
javascript string字符串优化问题
2011/07/31 Javascript
javascript操作JSON的要领总结
2012/12/09 Javascript
Ajax请求在数据量大的时候出现超时的解决方法
2014/02/27 Javascript
BootStrap扔进Django里的方法详解
2016/05/13 Javascript
[js高手之路]单例模式实现模态框的示例
2017/09/01 Javascript
vuejs使用axios异步访问时用get和post的实例讲解
2018/08/09 Javascript
javascript和php使用ajax通信传递JSON的实例
2018/08/21 Javascript
原生JS实现轮播图效果
2018/10/12 Javascript
微信小程序swiper实现滑动放大缩小效果
2018/11/15 Javascript
vscode下vue项目中eslint的使用方法
2019/01/13 Javascript
javascript数组元素删除方法delete和splice解析
2019/12/09 Javascript
JavaScript实现指定数量的并发限制的示例代码
2020/03/10 Javascript
Vue实现简易购物车页面
2020/12/30 Vue.js
跟老齐学Python之有容乃大的list(4)
2014/09/28 Python
使用Python编写一个简单的tic-tac-toe游戏的教程
2015/04/16 Python
python Flask实现restful api service
2017/12/04 Python
详解Python 切片语法
2019/06/10 Python
python绘制直方图和密度图的实例
2019/07/08 Python
使用python分析统计自己微信朋友的信息
2019/07/19 Python
HTML5新增的8类INPUT输入类型介绍
2015/07/06 HTML / CSS
使用HTML5里的classList操作CSS类
2016/06/28 HTML / CSS
GIVENCHY纪梵希官方旗舰店:高定彩妆与贵族护肤品
2018/04/16 全球购物
BudgetAir印度:预订航班、酒店和汽车租赁
2019/07/07 全球购物
意大利巧克力店:Chocolate Shop
2019/07/24 全球购物
SQL注入攻击的种类有哪些
2013/12/30 面试题
个人自我鉴定范文
2013/10/04 职场文书
实习鉴定评语
2014/01/19 职场文书
信用卡工资证明格式
2014/09/13 职场文书
2015年酒店客房部工作总结
2015/04/25 职场文书
MySQL分区表实现按月份归类
2021/11/01 MySQL