XIU2 / UserScript

🐵 自用的一些乱七八糟 油猴脚本~
https://greasyfork.org/users/457025
GNU General Public License v3.0
7.85k stars 618 forks source link

[自动无缝翻页] 希望对知乎的无缝翻页功能增强 #468

Closed M1ssakira closed 2 months ago

M1ssakira commented 2 months ago

功能需求

首先谢谢提供如此好用的脚本。

我经常在知乎翻阅我关注的问题 (https://www.zhihu.com/people/some_user/following/questions) 和各种收藏夹 (https://www.zhihu.com/people/some_user/collections) 。现在的 feature 是无缝添加下一个整体页面。 如果不和产品理念有冲突,希望能够变成只添加相应的 item,类似刷 feed 流的那种体验。

我不清楚着是否会破坏 autopager 的设计(需要专门对知乎做处理),如果这个功能添加到知乎增强我也很感谢。

预期目标

翻页只添加需要更新到 item 而不是整个 page。 www google com_search_q=lilith newwindow=1 sca_esv=3e5381c58a31f6c2 pws=0 gl=us sxsrf=ADLYWILwvw0Aw82dApWGxEFTXMQXB-lZoQ_1724229648693 ei=EKjFZq2FKufi2roPpsaB-A4 start=110 sa=N sstk=AagrsuiTPSTBqIhAJUel-iXY3ULJViGNGJIe9uMjICUPsYkEYlyup5uCto

XIU2 commented 2 months ago

你猜我这些年写了一两千条规则,为什么绝大部分网站规则都是你说的那样无缝瀑布流,偏偏知乎是这样插入整体网页?是我真的不知道无缝瀑布流效果更好么?。。。

我要能做到早就做了,知乎之所以只能像现在这样把下一页整体插入网页底部,是因为知乎是动态加载内容网站,而对于动态加载内容的网站,要想依靠外部脚本实现无缝翻页效果是非常苛刻的,需要逆向整个网站,就这一步就最少需要几天起步,而且结果是未知的,大概率研究到最后发现依然没办法实现。 基本上只有简单一点的动态加载内容网站才能这样干,否则这难度约等于把整个网站的前端网页全部吃透,并重新写一遍。

动态加载内容的网站有很多类型 有的是完全做不了,即完全动态加载内容。

有的还能试试,比如像知乎这样点击页码后,地址栏中的地址末尾会加上页码参数,如果复制这个带页码的网站地址到新标签页里打开显示的依然是实际上的第 X 页,那么只要网站没限制 iframe 就能通过这个将下一页整体插入网页底部。

但像这种地址带页码的动态加载网站也分好几种,有的比如 B 站搜索页其实也是动态加载内容,但是因为可以通过地址带下一页页码来访问,而且搜索页里的都只是一些不需要怎么交互的元素,这样可以先在不可见的 iframe 里加载完成,然后再提取出来插入到当前网页底部,实现和常规静态网页类似的体验(但加载过程会明显更长)。

而知乎之所以不这么做,是因为知乎里交互的选项太多了,每一个交互的选项都是动态加载的,而且都绑定的是事件,如果像 B 站搜索页那样提取出来就会失去事件,而如果要手动绑定事件,那就需要逆向知乎网页。

还有就是半静态半动态的,比如百度网盘的帖子内,网页本身算是静态,但是点赞回复、楼中楼评论都是动态加载的,这种交互也都是事件,因此也只能无奈采用 iframe 套娃方案了。

我这些年不管是内置规则还是外置规则还是给大家请求里单独写的规则,加起来少说一两千个,但动态加载内容的屈指可数,顶多算个零头,而且因为一开始碰了满头包,各种忙活半天到最后发现完全没办法的挫败,所以我现在以及不碰动态加载内容的网站了,因为绝大部分动态加载内容的网站都是无法编写规则的,像 B 站搜索页、知乎这种已经算是很少见的了。

编写一个静态网站翻页规则,网页类型不多,快的话一两分钟就完事(主要时间是寻找各种页面和测试),而动态网站?半天起步,上不封顶,而且大概率忙活半天白忙活,就算遇到简单点的好不容易写完了,网站站长只要动了点什么地方,可能就失效了,就需要重新来折腾了。

我印象最深刻的,就是脚本前中期,当时很多人申请各种漫画网站,而这些漫画网站一般为了避免被爬取,都做了各种反制措施,各种混淆加密,当时可能随便一个漫画网站都能卡我几天,那段时间也是我干劲最足的时候,一口气逆向了几十个漫画网站,但也因此耗尽了我的“精气神”,真的是写吐了,反正后面我是半停更了大半年,才缓过来了,最近才逐渐开始接受申请了。

当然,我现在也没有那么头铁了,我会挑着写了。

M1ssakira commented 2 months ago

了解了,谢谢你之前的辛苦工作。