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


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 相关文章推荐
不用iconv库的gb2312与utf-8的互换函数
Oct 09 PHP
一个php作的文本留言本的例子(二)
Oct 09 PHP
PHP 日,周,月点击排行统计
Jan 11 PHP
PHP写的加密函数,支持私人密钥(详细介绍)
Jun 09 PHP
解析php中用PHPMailer来发送邮件的示例(126.com的例子)
Jun 24 PHP
discuz免激活同步登入代码修改方法(discuz同步登录)
Dec 24 PHP
PHP使用PDO连接ACCESS数据库
Mar 05 PHP
php动态函数调用方法
May 21 PHP
PHP-FPM实现性能优化
Mar 31 PHP
PHP GD库相关图像生成和处理函数小结
Sep 30 PHP
PHP实现简单的模板引擎功能示例
Sep 02 PHP
php 可变函数使用小结
Jun 12 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
gd库图片下载类实现下载网页所有图片的php代码
2012/08/20 PHP
PHP命名空间(Namespace)简明教程
2014/06/11 PHP
PHP实现自动对图片进行滚动显示的方法
2015/03/12 PHP
ThinkPHP5 的简单搭建和使用详解
2018/11/15 PHP
ext 列表页面关于多行查询的办法
2010/03/25 Javascript
基于JQuery的一个简单的鼠标跟随提示效果
2010/09/23 Javascript
jquery将一个表单序列化为一个对象的方法
2013/12/02 Javascript
JavaScript插件化开发教程(六)
2015/02/01 Javascript
快速获取/设置iframe内对象元素的几种js实现方法
2016/05/20 Javascript
jQuery中on绑定事件后引发的事件冒泡问题如何解决
2016/05/25 Javascript
JS数组返回去重后数据的方法解析
2017/01/03 Javascript
详解vue模拟加载更多功能(数据追加)
2017/06/23 Javascript
vue.js实现只弹一次弹框
2018/01/29 Javascript
解决Angular.js中使用Swiper插件不能滑动的问题
2018/02/26 Javascript
js中事件对象和事件委托的介绍
2019/01/21 Javascript
简单了解node npm cnpm的具体使用方法
2019/02/27 Javascript
JS开发常用工具函数(小结)
2019/07/04 Javascript
js实现轮播图效果 z-index实现轮播图
2020/01/17 Javascript
python函数局部变量用法实例分析
2015/08/04 Python
Python将DataFrame的某一列作为index的方法
2018/04/08 Python
Python把csv数据写入list和字典类型的变量脚本方法
2018/06/15 Python
Python实现队列的方法示例小结【数组,链表】
2020/02/22 Python
python 使用多线程创建一个Buffer缓存器的实现思路
2020/07/02 Python
Python 使用 PyQt5 开发的关机小工具分享
2020/07/16 Python
Python3.9.1中使用match方法详解
2021/02/08 Python
橄榄树药房:OLIVEDA
2019/09/01 全球购物
New Balance俄罗斯官方网上商店:购买运动鞋
2020/03/02 全球购物
澳大利亚在线批发商:Simply Wholesale
2021/02/24 全球购物
英国Lookfantastic中文网站:护肤品美妆美发购物(英国直邮)
2020/04/27 全球购物
技术人员面试提纲
2013/11/28 职场文书
如何填写个人简历自我评价
2013/12/10 职场文书
秋季红领巾广播稿
2014/01/27 职场文书
2014年大学生党课心得体会范文
2014/03/29 职场文书
工作说明书格式
2014/07/29 职场文书
销售经理工作检讨书
2015/02/19 职场文书
Python基础之数据类型知识汇总
2021/05/18 Python