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


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 相关文章推荐
php printf输出格式使用说明
Dec 05 PHP
使用PHP备份MySQL和网站发送到邮箱实例代码
Nov 28 PHP
一个PHP的ZIP压缩类分享
May 04 PHP
Thinkphp中数据按分类嵌套循环实现方法
Oct 30 PHP
php 利用array_slice函数获取随机数组或前几条数据
Sep 30 PHP
浅析PHP7新功能及语法变化总结
Jun 17 PHP
PHP利用正则表达式将相对路径转成绝对路径的方法示例
Feb 28 PHP
降低PHP Redis内存占用
Mar 23 PHP
PHP读取CSV大文件导入数据库的实例
Jul 24 PHP
浅谈Yii乐观锁的使用及原理
Jul 25 PHP
PHP开发之归档格式phar文件概念与用法详解【创建,使用,解包还原提取】
Nov 17 PHP
PHP 结合 Boostrap 结合 js 实现学生列表删除编辑及搜索功能
May 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
PHP编码规范-php coding standard
2007/03/16 PHP
php上传文件的增强函数
2010/07/21 PHP
Javascript 复制数组实现代码
2009/11/26 Javascript
js实现双向链表互联网机顶盒实战应用实现
2011/10/28 Javascript
再说AutoComplete自动补全之实现原理
2011/11/05 Javascript
捕获和分析JavaScript Error的方法
2014/03/25 Javascript
JS实现清除指定cookies的方法
2014/09/20 Javascript
javascript中parseInt()函数的定义和用法分析
2014/12/20 Javascript
JavaScript表单验证实例之验证表单项是否为空
2016/01/10 Javascript
js通过指定下标或指定元素进行删除数组的实例
2017/01/12 Javascript
JavaScript判断浏览器及其版本信息
2017/01/20 Javascript
使用Vue.js开发微信小程序开源框架mpvue解析
2018/03/20 Javascript
jQuery 导航自动跟随滚动的实现代码
2018/05/30 jQuery
vue 使用html2canvas将DOM转化为图片的方法
2018/09/11 Javascript
JavaScript数组排序小程序实现解析
2020/01/13 Javascript
详解阿里Node.js技术文档之process模块学习指南
2021/01/04 Javascript
[05:34]2014DOTA2国际邀请赛中国区预选赛精彩TOPPLAY第二弹
2014/06/25 DOTA
python实现的DES加密算法和3DES加密算法实例
2015/06/03 Python
Python反转序列的方法实例分析
2018/03/21 Python
python实现n个数中选出m个数的方法
2018/11/13 Python
详解python使用pip安装第三方库(工具包)速度慢、超时、失败的解决方案
2018/12/02 Python
python 通过手机号识别出对应的微信性别(实例代码)
2019/12/22 Python
Django实现celery定时任务过程解析
2020/04/21 Python
Django实现简单的分页功能
2021/02/22 Python
css3实例教程 一款纯css3实现的发光屏幕旋转特效
2014/12/07 HTML / CSS
HTML5 input placeholder 颜色修改示例
2014/05/30 HTML / CSS
VICHY薇姿英国官网:全球专业敏感肌护肤领先品牌
2017/07/04 全球购物
我的老师教学反思
2014/05/01 职场文书
学校法制宣传月活动总结
2014/07/03 职场文书
工厂门卫的岗位职责
2014/07/27 职场文书
2014年乡镇安全生产工作总结
2014/12/02 职场文书
督导岗位职责
2015/02/04 职场文书
党员考试作弊检讨书1000字
2015/02/16 职场文书
2015年幼儿园安全工作总结
2015/05/12 职场文书
赤壁观后感(2)
2015/06/15 职场文书
mysql查看表结构的三种方法总结
2022/07/07 MySQL