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


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 相关文章推荐
文章推荐系统(二)
Oct 09 PHP
如何将一个表单同时提交到两个地方处理
Oct 09 PHP
php.ini中的php-5.2.0配置指令详解
Mar 27 PHP
php二维数组排序与默认自然排序的方法介绍
Apr 27 PHP
解析argc argv在php中的应用
Jun 24 PHP
解析数组非数字键名引号的必要性
Aug 09 PHP
PHP二维数组排序的3种方法和自定义函数分享
Apr 09 PHP
thinkphp连贯操作实例分析
Nov 22 PHP
php可生成缩略图的文件上传类实例
Dec 17 PHP
PHP数组操作实例分析【添加,删除,计算,反转,排序,查找等】
Dec 24 PHP
详解Yii2 定制表单输入字段的标签和样式
Jan 04 PHP
PHP和MYSQL实现分页导航思路详解
Apr 11 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获取汉字首字母的函数
2013/11/07 PHP
laravel实现分页样式替换示例代码(增加首、尾页)
2017/09/22 PHP
IE 上下滚动展示模仿Marquee机制
2009/12/20 Javascript
禁用页面部分JavaScript不是全部而是部分
2014/09/03 Javascript
JQuery实现图片轮播效果
2015/09/15 Javascript
浅析JS运动
2015/12/28 Javascript
浅谈Javascript中的Label语句
2016/12/14 Javascript
jq给页面添加覆盖层遮罩的实例
2017/02/16 Javascript
vue.js数据绑定的方法(单向、双向和一次性绑定)
2017/07/13 Javascript
JavaScript内存泄漏的处理方式
2017/11/20 Javascript
swiper插件自定义切换箭头按钮
2017/12/28 Javascript
基于vue cli 通过命令行传参实现多环境配置
2018/07/12 Javascript
Angular6 Filter实现页面搜索的示例代码
2018/12/02 Javascript
node中使用es6/7/8(支持性与性能)
2019/03/28 Javascript
JS中的算法与数据结构之列表(List)实例详解
2019/08/16 Javascript
Net微信网页开发 使用微信JS-SDK获取当前地理位置过程详解
2019/08/26 Javascript
浅析Vue 中的 render 函数
2020/02/28 Javascript
python 生成不重复的随机数的代码
2011/05/15 Python
python的多重继承的理解
2017/08/06 Python
django创建自定义模板处理器的实例详解
2017/08/14 Python
python redis 删除key脚本的实例
2019/02/19 Python
Django框架中序列化和反序列化的例子
2019/08/06 Python
python+mysql实现个人论文管理系统
2019/10/25 Python
Python 中的 import 机制之实现远程导入模块
2019/10/29 Python
Python 如何创建一个线程池
2020/07/28 Python
酒店员工检讨书
2014/02/18 职场文书
竞选劳动委员演讲稿
2014/04/28 职场文书
护理学院专科毕业生求职信
2014/06/28 职场文书
正风肃纪剖析材料范文
2014/10/10 职场文书
2015教师年度考核评语
2015/03/25 职场文书
六一儿童节新闻稿
2015/07/17 职场文书
2016寒假社会实践心得体会范文
2015/10/09 职场文书
经销商会议开幕词
2016/03/04 职场文书
原来实习报告是这样写的呀!
2019/07/03 职场文书
创业计划书之服装
2019/10/07 职场文书
Vue.js 带下拉选项的输入框(Textbox with Dropdown)组件
2021/04/17 Vue.js