晚上在写一个通过浏览器插件注入脚本到页面截取 B 站 API 数据,实现追番进度获取和转存到小窝后端的功能。目前已经完成了在插件获取进度的功能,后端更新进度的接口还没开干呢。
主要逻辑就是创建一个用于注入页面的 JS 文件,使用 Object.defineProperty
改写 XHR 的方法以劫持数据,通过 setInterval
待多个 API 均被请求则计算进度,待后续提交到服务器。注意需要指定启动模式为 document_start
,否则人家全加载完了你才注入就拿不到接口数据了。
export const config: PlasmoCSConfig = {
run_at: "document_start",
matches: ["https://www.bilibili.com/bangumi/media/*"],
world: "MAIN",
};
期间还参考了下面的内容,主要的业务实现在这里就不多概述了。
- Chrome 扩展程序获取 ResponseBody 的最佳方案 - 改写 XHR(使用示例篇)
- Injecting into the main world - Plasmo Docs
- 匹配模式 - Chrome For Developers
本来要继续日常原神崩铁的,但原神有相当一部分要刷体力的任务都给我同事了(他在帮我刷本换圣遗物,就顺带换掉体力了)