网络日志

[JS真好玩] 嘘!我改了掘金源代码!1行代码,让表格支持page_size切换,从每页10条变为2

我是HullQin,公众号线下聚会游戏的作者(欢迎关注公众号,发送加微信,交个朋友),转发本文前需获得作者HullQin授权。我独立开发了《联机桌游合集》,是个网页,可以很方便的跟朋友联机玩斗地主、五子棋等游戏,不收费没广告。还开发了《Dice Crush》参加Game Jam 2022。喜欢可以关注我 HullQin 噢~我有空了会分享做游戏的相关技术。

掘金创作者的困惑

上篇文章,我们用1行代码,计算掘金创作者写的文章的「展现-阅读转化率」以及「点赞率」等,传送门:《掘金创作者必备: 用一行JS查看所有文章的转化率,让你知道什么标题才是好标题》

但是,有个问题,进入「创作者中心」-「内容数据」-「数据趋势」-「单篇分析」https://juejin.cn/creator/data/content/article/single 后,如果你比较勤奋,写了10篇以上的文章,那么这个表格只能展示10篇文章,因为表格限定:每页10条数据

不知是掘金的产品经理比较倔强,还是掘金的前端开发比较懒,(狗头保命)这个数据分析用的表格并不支持切换page_size(每页文章的数量)。

所以,用我上篇文章的方法,每次只能计算10篇文章的转化率,并不能一次性计算出所有文章的转化率。

这实在是太难受了!我已经写了将近20篇文章了,我希望把它们放在一起,统一分析数据!

其实对创作者而言,这种展示数据的表格还是非常重要的,因为可以帮助创作者分析,最好至少每页展示20条(但是这样就很长,会比较丑)。

但是现在,不用给掘金产品提建议了,因为我已经用1行代码帮掘金实现这个功能了!

解决方案

经过我HullQin坚持不懈的努力,终于找到了解决办法,并且只需要1行代码!

来吧,展示:1行代码!

_f=fetch,fetch=(u,i)=>u.includes('list_by_user')?_f(u,{...i,body:JSON.stringify({...JSON.parse(i.body),page_size:20})}):_f(u,i);

使用方法

  1. 打开「创作者中心」-「内容数据」-「数据趋势」-「整体分析」
  2. F12打开浏览器的开发者工具,进入Console(调试)面板,复制粘贴上面的代码,并按回车键
  3. 【不要刷新浏览器】点击「单篇分析」

你会发现,这个「单篇分析」表格已经展示了至多20篇文章!(如果你文章不够20篇,看到的就是你所有文章了)

求赞求收藏,我为什么求赞求收藏?

掘金将来可能会改版,这个方法可能会失效。不建议你直接复制走代码,建议你收藏文章,再顺手点个赞,超级感谢!因为如果掘金改版了,我会同步修改文章的代码,保证它永远可用!你每次可以来这里找到最新的可用的代码!

原理

通过抓包发现,「单篇分析」的数据来自于叫做list_by_user的接口,它的request body有个参数,叫做page_size,只要我们把这个参数改大点,那么就会请求得到更多数据啦,然后前端就会渲染出这些数据。

经过试验,后端对page_size有限制,最大是20,所以我们把page_size改成20就可以了。

怎么修改fetch时的request body呢?

幸运的是,JS中函数也是「一等公民」,我们直接把全局的window.fetch函数改了就好,用旧的window.fetch封装出一个新的fetch函数,并赋值给window.fetch。这种模式也叫「装饰器模式」。

在新的fetch函数中,判断如果请求是list_by_user,就修改它的body参数中的page_size,改成20,就可以啦。

当然还有其它方法,例如配置代理修改请求包,但是如果你之前没配过代理,就需要安装代理软件、信任证书等操作,不如执行1行JS来得快~以后我也会教你代理方法的,功能更强大,也更方便,哈哈哈,快快关注我,现在关注我就是老粉啦。

注意事项

毕竟我本人之前也是字节的前端开发,出于责任感,提示下大家:禁止发送恶意请求给掘金噢,禁止压测噢,禁止利用掘金漏洞干坏事噢,不然你的账号可能会被封禁。

写在最后

我是HullQin,公众号线下聚会游戏的作者(欢迎关注公众号,发送加微信,交个朋友),转发本文前需获得作者HullQin授权。我独立开发了《联机桌游合集》,是个网页,可以很方便的跟朋友联机玩斗地主、五子棋等游戏,不收费没广告。还开发了《Dice Crush》参加Game Jam 2022。喜欢可以关注我 HullQin 噢~我有空了会分享做游戏的相关技术。