• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

如何获取知乎日报里的图片?

php 搞代码 3年前 (2022-01-25) 19次浏览 已收录 0个评论
文章目录[隐藏]

我在做一个第三方的知乎日报,但是图片获取不到?有纯前端的实现么?

回复内容:

我在做一个第三方的知乎日报,但是图片获取不到?有纯前端的实现么?

js正则表达式。

获取不到是指?

按理来说,只要你是通过 API 去获取的话,图片的地址一定是能获取到的(因为我也写过一个网页版的知乎日报(前端有点渣,写得有点烂,迟点可能要下线了。。),到现在依然能正常工作)。
但是,如果你是在网页上直接引用 API 里提供的图片地址的话,那么恭喜你,403 Forbidden,知乎那边开启了防盗链功能。

这样,我们就用不了了吗?不!当你在浏览器新的标签/窗口直接访问图片地址的话,你是能看到图片的。知乎的防盗链原理是检查 refer 是否为空或者是否为知乎的网站。

那么我们可以用 JS 来把%本文来源gaodai#ma#com搞*代#码9网#搞gaodaima代码图片放在一个 iframe 里,再把 iframe 的边框设置为 0,具体代码如下:

<code>var count = 0;window.img_array = new Array();// create a img framefunction create_img_iframe(url){    var frameid = 'frameimg' + Math.random();    window.img = '<script>window.onload = function() { parent.document.getElementById(\''+frameid+'\').height = document.getElementById(\'img\').height+\'px\'; }';    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 idfunction hotlink_under_id(id){    var div = document.getElementById(id);    imgs = div.getElementsByTagName('img');    while (imgs.length > 0)    {        src = imgs[0].src;        ifr = create_img_iframe(src);        imgs[0].parentNode.replaceChild(ifr, imgs[0]);    }}</code>

上面那些代码不是我原创,我是基于网上的一个大神修改的貌似(不记得有没有修改过了。。反正到时很认真地去看过这一段代码的原理),具体出处忘了,囧

上面这种方法其实也不是特别完美,因为这样弄之后图片底部会被切掉一些些(在 iframe 中的位置造成部分被隐藏)。个人感觉更好的解决方案应该是:
用自己的服务器把图片缓存起来,然后把 API 中的图片地址进行替换

不管你用哪种方法,一定要注意版权问题啊!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:如何获取知乎日报里的图片?

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址