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


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 相关文章推荐
smarty静态实验表明,网络上是错的~呵呵
Nov 25 PHP
PHP的变量总结 新手推荐
Apr 18 PHP
浅谈PHP变量作用域以及地址引用问题
Dec 27 PHP
PHP中常用的转义函数
Feb 28 PHP
php判断是否为json格式的方法
Mar 04 PHP
适用于抽奖程序、随机广告的PHP概率算法实例
Apr 09 PHP
PHP实现将HTML5中Canvas图像保存到服务器的方法
Nov 28 PHP
浅谈php中include文件变量作用域
Jun 18 PHP
两种php实现图片上传的方法
Jan 22 PHP
Yii隐藏URL中index.php的方法
Jul 12 PHP
Thinkphp3.2简单解决多文件上传只上传一张的问题
Sep 26 PHP
Docker搭建自己的PHP开发环境
Feb 24 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实现httpclient类示例
2014/04/08 PHP
php三种实现多线程类似的方法
2015/10/30 PHP
js 发个判断字符串是否为符合标准的函数
2009/04/27 Javascript
jQuery.query.js 取参数的两点问题分析
2012/08/06 Javascript
javascript动态加载三
2012/08/22 Javascript
jquery时间下拉框小例子
2013/04/15 Javascript
Javascript前端UI框架Kit使用指南之kitjs事件管理
2014/11/28 Javascript
jquery实现textarea输入框限制字数的方法
2015/01/15 Javascript
详解AngularJS控制器的使用
2016/03/09 Javascript
Linux下为Node.js程序配置MySQL或Oracle数据库的方法
2016/03/19 Javascript
Angularjs 动态添加指令并绑定事件的方法
2017/04/13 Javascript
ES6中新增的Object.assign()方法详解
2017/09/22 Javascript
微信小程序实现语音识别转文字功能及遇到的坑
2019/08/02 Javascript
python虚拟环境 virtualenv的简单使用
2020/01/21 Javascript
Python基于回溯法子集树模板实现8皇后问题
2017/09/01 Python
Python3多线程操作简单示例
2018/05/22 Python
pycharm安装和首次使用教程
2018/08/27 Python
Python编写合并字典并实现敏感目录的小脚本
2019/02/26 Python
python获取依赖包和安装依赖包教程
2020/02/13 Python
Python Pillow(PIL)库的用法详解
2020/09/19 Python
Python jieba库分词模式实例用法
2021/01/13 Python
一文带你掌握Pyecharts地理数据可视化的方法
2021/02/06 Python
使用 CSS3 中@media 实现网页自适应的示例代码
2020/03/24 HTML / CSS
德国大型箱包和皮具商店:Koffer
2019/10/01 全球购物
数控专业个人求职信范例
2013/11/29 职场文书
建筑装饰学院室内设计专业个人自我评价
2013/12/07 职场文书
学校元旦晚会方案
2014/02/19 职场文书
环保宣传标语
2014/06/12 职场文书
办理护照工作证明
2014/10/10 职场文书
房产遗嘱范本
2015/08/06 职场文书
导游词之寿县报恩寺
2020/01/19 职场文书
python生成可执行exe控制Microsip自动填写号码并拨打功能
2021/06/21 Python
SQL模糊查询报:ORA-00909:参数个数无效问题的解决
2021/06/21 Oracle
java基础——多线程
2021/07/03 Java/Android
Win11 PC上的Outlook搜索错误怎么办?
2022/07/15 数码科技
windows11选中自动复制怎么开启? Win11自动复制所选内容的方法
2022/07/23 数码科技