王一之 发表于 2021-9-24 17:59:50

[脚本猫bilibili实战]每日签到

本系列教程计划将实现(https://github.com/JunzhouLiu/BILIBILI-HELPER-PRE)项目的大部分功能,通过这以整个项目来展示脚本猫的开发流程和特性,期间脚本猫还计划添加一些新的功能。

本节课来说bilibili的每日签到,在此之前已经有一个脚本了:(https://bbs.tampermonkey.net.cn/thread-370-1-1.html),本节就详细说明这个脚本是怎么制作出来的。

### 签到

首先我们先确定签到的地方,有两个,一个是主站每天登录就能领取1个硬币和5点经验。

!(data/attachment/forum/202109/24/175834yh43a2624kl6lakj.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/300 "image-20210924162245126.png")

另外一个地方是直播,需要自己点击签到。

!(data/attachment/forum/202109/24/175840eev72c773r5vtv24.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/300 "image-20210924162402664.png")

### 原理

原理很简单,简单来说就是模拟浏览器操作,往服务器发送接口请求,告诉服务器我们来签到了,请求签到的接口即可。我们需要通过抓包技术去找到这个接口,在浏览器上很简单,如果是APP的话,涉及到其它复杂的技术,以后再说。

在浏览器上,我们使用开发者工具(f12),切换到Network即可,我这里是Edge,显示的网络。

!(data/attachment/forum/202109/24/175844tuutmgvgukvs02to.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/300 "image-20210924164545575.png")

本系列教程使用到的接口也可从这个项目中去获取:(https://github.com/SocialSisterYi/bilibili-API-collect)

### 接口

> 接口抓包流程我在视频教程中录制

两个接口:[https://api.bilibili.com/x/web-interface/nav](https://api.bilibili.com/x/web-interface/nav) 每日签到(其实就是获取用户信息的,每天第一次调用,能够自动签到)

[https://api.live.bilibili.com/sign/doSign](https://api.live.bilibili.com/sign/doSign) (直播签到)

### 代码

签到一般是一天签到一次,所以我们可以在脚本中定义如下cron表达式

`//@crontab * 1-23 once * *`表示在每天的1-23小时检测运行一次,为什么是1-23呢?主要考虑到万一本地时间与服务器时间相差了几秒,在0点0分0秒签到的话可能会签到失败

接口调用我们直接使用:`GM_xmlhttpRequest`做GET请求即可,使用方法与油猴的`GM_xmlhttpRequest`一样,具体的使用方法可以去看:

[油猴脚本开发指南]脚本ajax的跨域请求
[https://bbs.tampermonkey.net.cn/thread-136-1-1.html](https://bbs.tampermonkey.net.cn/thread-136-1-1.html)



另外我们需要脚本猫对脚本进行管理,可以监控运行中状态,我们需要用到Promise,像官方文档中说的一样,当签到成功,我们可以直接使用`resolve()`返回成功,因为某些原因失败,使用`reject()`返回失败和失败的原因

```js
return new Promise((resolve, reject) => {
 if (Math.round((Math.random() * 10) % 2)) {
   resolve("ok");// 执行成功
} else {
   reject("error");// 执行失败,并返回错误原因
}
});
```


最后的代码可以直接看:(https://bbs.tampermonkey.net.cn/thread-370-1-1.html) 这个脚本

脚本体验师001 发表于 2021-9-24 20:57:50

懂技术的人或不少
懂技术又愿意分享的
止于本站
一万个顶

陈公子的话 发表于 2021-9-24 23:16:09

懂技术又愿意分享的止于本站

发表于 2021-9-25 10:54:51

懂技术又愿意分享的止于本站

李恒道 发表于 2021-9-25 23:45:16

脚本体验师001 发表于 2021-9-24 20:57
懂技术的人或不少
懂技术又愿意分享的
止于本站


油猴部分的东西
我觉得这个论坛还真能解答大部分常见问题了...
哈哈哈
页: [1]
查看完整版本: [脚本猫bilibili实战]每日签到