php 获取 知乎,php - 如何获取知乎日报里的图片?
天蓬老师2017-04-10 15:27:052楼
获取不到是指?
按理来说,只要你是通过 API 去获取的话,图片的地址一定是能获取到的(因为我也写过一个网页版的知乎日报(前端有点渣,写得有点烂,迟点可能要下线了。。),到现在依然能正常工作)。
但是,如果你是在网页上直接引用 API 里提供的图片地址的话,那么恭喜你,403 Forbidden,知乎那边开启了防盗链功能。
这样,我们就用不了了吗?不!当你在浏览器新的标签/窗口直接访问图片地址的话,你是能看到图片的。知乎的防盗链原理是检查 refer 是否为空或者是否为知乎的网站。
那么我们可以用 JS 来把图片放在一个 iframe 里,再把 iframe 的边框设置为 0,具体代码如下:
var count = 0;
window.img_array = new Array();
// create a img frame
function create_img_iframe(url)
{
var frameid = 'frameimg' + Math.random();
window.img = '
window.img_array[count] = window.img;
ifr = document.createElement('iframe');
ifr.src = "javascript:parent.img_array[" + count + "];";
ifr.frameBorder="0";
ifr.scrolling="no";
ifr.width="100%";
ifr.id = frameid;
count++;
return ifr;
}
// hotlink, param id is the img parent id
function hotlink_under_id(id)
{
var p = document.getElementById(id);
imgs = p.getElementsByTagName('img');
while (imgs.length > 0)
{
src = imgs[0].src;
ifr = create_img_iframe(src);
imgs[0].parentNode.replaceChild(ifr, imgs[0]);
}
}
上面那些代码不是我原创,我是基于网上的一个大神修改的貌似(不记得有没有修改过了。。反正到时很认真地去看过这一段代码的原理),具体出处忘了,囧
上面这种方法其实也不是特别完美,因为这样弄之后图片底部会被切掉一些些(在 iframe 中的位置造成部分被隐藏)。个人感觉更好的解决方案应该是:
用自己的服务器把图片缓存起来,然后把 API 中的图片地址进行替换
不管你用哪种方法,一定要注意版权问题啊!
php 获取 知乎,php - 如何获取知乎日报里的图片?相关推荐
- 知乎个人答案获取 然后vscode 的文件夹搜索,因为知乎没有自己的答案搜索
知乎个人答案获取 然后vscode 的文件夹搜索,因为知乎没有自己的答案搜索 知乎个人答案获取
- php编译工具 知乎,关于知乎回答问题编辑框用Ctrl+V 粘贴图片是如何实现的详解...
貌似我没有像QQ邮箱之类的装知乎的插件 是用HTML5的新功能实现的吗? 看了@朱利安 的回答,发现我描述的不够清楚 我是用QQ截图之类的工具截的图,然后图片本身是保存在剪切板里的,剪切板中保存的*不 ...
- python爬虫知乎代码_python爬虫知乎的简单代码实现
随着时代的发展,我们很依赖网络帮助我们解决问题,遇到什么问题就会先百度.除了百度,现在大多数人还会选择通过知乎来解决问题.知乎类似于一个论坛,讨论度比百度高一些,那你知道如何用python爬虫爬知乎网 ...
- python爬取知乎话题广场_知乎一共有多少个话题?
上图可知,它是通过请求POST接口来取得知乎话题数据,接口信息: 其中topic_id指大分类下的id,offset是指偏移量,指每次执行next方法加载的子话题数量,hash_id可以为空我们暂时忽 ...
- java 获取泛型的type,如何获取泛型的Type类型
开发中很多时候都遇到或使用到泛型.例如在json转换成bean对象或其他对象,而对象中存在泛型,这时候需要用到TypeToken. Type:是java里的 java.lang.reflect.Typ ...
- DBSCAN的两个核心参数是什么?如何获取最佳参数?如何可视化获取的过程?
DBSCAN的两个核心参数是什么?如何获取最佳参数?如何可视化获取的过程? sklearn中含有DBSCAN密度聚类算法 cluster.DBSCAN DBSCAN:Density-Based Spa ...
- php获取头像,WordPress中用于获取及自定义头像图片的PHP脚本详解
get_avatar()(获取头像)get_avatar() 函数用来获取置顶邮箱或者用户的头像代码,在评论列表中非常常用. 这个函数提供一个 get_avatar 过滤器,用来过滤头像的 Html ...
- mysql获取当月数据_MySQL中获取天、周、月等数据
MySQL中获取天.周.月等数据 1.今天 select * from 表名 where to_days(时间字段名) = to_days(now()); 2.昨天 SELECT * FROM 表名 ...
- 网站推广流量获取仍需寻找全新获取网站推广流量渠道
每天面对实时变化的用户需求市场,站长们想通过巩固自家网站流量以保持日常运营很难,还是要靠获取新流量的方式弥补每天都在流失的用户访问流量.而在搜索引擎中,获取流量的方式十分多元,站长想要突破传统获取桎梏 ...
最新文章
- CSS三角形如何工作?
- CNN----卷积为何能提取图像特征
- android tabhost --android UI 学习
- 【Android 逆向】函数拦截实例 ( 函数拦截流程 | ① 定位动态库及函数位置 )
- 复习JavaScript随手记
- 以下不属于计算机安全术语,基础知识(D).doc
- Google强化学习框架SEED RL环境部署
- C/C++ realloc()函数解析
- JEECG社区第六期架构培训班报名
- jquery-显示隐藏-链式调用
- Java浅克隆和深克隆
- 闭包造成的内存泄露怎么解决?
- Mybatis学习笔记-CURD(基于配置文件的方式)
- Lua开发工作笔记0003---Windows下搭建Lua开发环境
- EIP-1559性能测试:22小时共处理6426个区块,平均每个区块4100万Gas
- 20200221_2_国家非文化遗产爬虫代码
- MySQL-快速入门(2)数据类型
- qemu 搭建 ARM Linux环境
- 在GPU上运行MATLAB程序
- torch.bernoulli 的使用方法(附代码示例)
热门文章
- 总结xml,适合初学者
- nexus+7+android+5.0++wifi+代理,二代Nexus 7获Android 5.0.2系统更新
- 基于java的围棋游戏设计
- DBMS_REDEFINITION 实现对原表进行分区
- WordPress:自定义头像
- php更换wordpress用户头像,WordPress如何添加用户自定义上传头像功能
- win10 系统安装 问题 -- 找不到签名的设备驱动程序-- (记录)
- 大数据分析师 - 技术体系 - 了解篇
- day15_雷神_前端03
- java日志框架之JCL和SLF4J