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


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 相关文章推荐
php4的session功能评述(二)
Oct 09 PHP
使用 MySQL Date/Time 类型
Mar 26 PHP
PHP 巧用数组降低程序的时间复杂度
Jan 01 PHP
PHP开发框架kohana中处理ajax请求的例子
Jul 14 PHP
wamp安装后自定义配置的方法
Aug 23 PHP
PHP中echo和print的区别
Aug 28 PHP
PHP PDOStatement对象bindpram()、bindvalue()和bindcolumn之间的区别
Nov 20 PHP
PHP中的traits实现代码复用使用实例
May 13 PHP
PHP数据库连接mysql与mysqli对比分析
Jan 04 PHP
PHP入门教程之正则表达式基本用法实例详解(正则匹配,搜索,分割等)
Sep 11 PHP
php 替换文章中的图片路径,下载图片到本地服务器的方法
Feb 06 PHP
详细解读php的命名空间(二)
Feb 21 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
杏林同学录(二)
2006/10/09 PHP
php检查字符串中是否有外链的方法
2015/07/29 PHP
java微信开发之上传下载多媒体文件
2016/06/24 PHP
不用ajax实现点击文字即可编辑的方法
2007/12/16 Javascript
Jquery ajaxsubmit上传图片实现代码
2010/11/04 Javascript
你必须知道的JavaScript 变量命名规则详解
2013/05/07 Javascript
jQuery的选择器中的通配符使用介绍
2014/03/20 Javascript
jQuery中的$.ajax()方法应用
2014/05/06 Javascript
jquery点击改变class并toggle的实现代码
2016/05/15 Javascript
解析javascript图片懒加载与预加载的分析总结
2016/10/27 Javascript
js制作可以延时消失的菜单
2017/01/13 Javascript
Node.js读取文件内容示例
2017/03/07 Javascript
Bootstrap警告(Alerts)的实现方法
2017/03/22 Javascript
利用JS判断客户端类型你应该知道的四种方法
2017/12/22 Javascript
浅析Node.js非对称加密方法
2018/01/29 Javascript
vue中子组件调用兄弟组件方法
2018/07/06 Javascript
TypeScript之调用栈的实现
2019/12/31 Javascript
python发送邮件接收邮件示例分享
2014/01/21 Python
Python多线程编程简单介绍
2015/04/13 Python
Python基于PyGraphics包实现图片截取功能的方法
2017/12/21 Python
聊聊Python中的pypy
2018/01/12 Python
Python3.6.x中内置函数总结及讲解
2019/02/22 Python
Python3.5迭代器与生成器用法实例分析
2019/04/30 Python
Form表单及django的form表单的补充
2019/07/25 Python
解决python多行注释引发缩进错误的问题
2019/08/23 Python
opencv-python 提取sift特征并匹配的实例
2019/12/09 Python
基于python爬取有道翻译过程图解
2020/03/31 Python
Python如何使用27行代码绘制星星图
2020/07/20 Python
美国快时尚彩妆品牌:Winky Lux(透明花瓣润唇膏)
2018/11/06 全球购物
Linux的主要特性
2016/09/03 面试题
大龄毕业生求职别忘职业规划
2014/03/11 职场文书
2016自主招生校长推荐信范文
2015/03/23 职场文书
检察院起诉意见书
2015/05/20 职场文书
学生会招新宣传语
2015/07/13 职场文书
创业计划书之熟食店
2019/10/16 职场文书
Java设计模式中的命令模式
2022/04/28 Java/Android