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


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 相关文章推荐
BBS(php &amp; mysql)完整版(三)
Oct 09 PHP
网络资源
Oct 09 PHP
PHP如何编写易读的代码
Jul 10 PHP
用php获取本周,上周,本月,上月,本季度日期的代码
Aug 05 PHP
php 获取客户端的真实ip
Nov 30 PHP
利用ThinkPHP内置的ThinkAjax实现异步传输技术的实现方法
Dec 19 PHP
8个PHP程序员常用的功能汇总
Dec 18 PHP
php四种定界符详解
Feb 16 PHP
yii2项目实战之restful api授权验证详解
May 20 PHP
YII框架http缓存操作示例
Apr 29 PHP
YII2框架中actions的作用与使用方法示例
Mar 13 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 smarty模版引擎中变量操作符及使用方法
2009/12/11 PHP
ThinkPHP通过AJAX返回JSON的两种实现方法
2014/12/18 PHP
php生成图片验证码的方法
2016/04/15 PHP
Yii2中简单的场景使用介绍
2017/06/02 PHP
文本框中,回车键触发事件的js代码[多浏览器兼容]
2010/06/07 Javascript
仅img元素创建后不添加到文档中会执行onload事件的解决方法
2011/07/31 Javascript
javascript学习(一)构建自己的JS库
2013/01/02 Javascript
详解JavaScript中的blink()方法的使用
2015/06/08 Javascript
JS实现的3D拖拽翻页效果代码
2015/10/31 Javascript
js实现文字垂直滚动和鼠标悬停效果
2015/12/31 Javascript
Easyui 之 Treegrid 笔记
2016/04/29 Javascript
js流动式效果显示当前系统时间
2016/05/16 Javascript
详解node中创建服务进程
2017/05/09 Javascript
简单实现js点击展开二级菜单功能
2017/05/16 Javascript
VUE axios发送跨域请求需要注意的问题
2017/07/06 Javascript
Node.js服务器开启Gzip压缩教程
2017/08/11 Javascript
JavaScript 继承 封装 多态实现及原理详解
2019/07/29 Javascript
layui 表单标签的校验方法
2019/09/04 Javascript
JavaScript字符串处理常见操作方法小结
2019/11/15 Javascript
vue3.0生命周期的示例代码
2020/09/24 Javascript
Python简单实现Base64编码和解码的方法
2017/04/29 Python
python实现装饰器、描述符
2018/02/28 Python
Python if语句知识点用法总结
2018/06/10 Python
python 字典中取值的两种方法小结
2018/08/02 Python
keras 自定义loss损失函数,sample在loss上的加权和metric详解
2020/05/23 Python
几款Python编译器比较与推荐(小结)
2020/10/15 Python
html5 offlline 缓存使用示例
2013/06/24 HTML / CSS
Skyscanner澳大利亚:全球领先的旅游搜索网站
2018/03/24 全球购物
EJB包括(SessionBean,EntityBean)说出他们的生命周期,及如何管理事务的?
2013/02/17 面试题
前台文员岗位职责及工作流程
2013/11/19 职场文书
函授毕业生的自我鉴定
2013/11/26 职场文书
教育孩子心得体会
2014/01/01 职场文书
数学系个人求职信范文
2014/01/30 职场文书
领导干部学习“三严三实”思想汇报
2014/09/15 职场文书
宾馆安全管理制度
2015/08/06 职场文书
python实现的人脸识别打卡系统
2021/05/08 Python