yz-yuki-plugin 2.0.5-1 → 2.0.5-10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.puppeteerrc.cjs +1 -1
- package/CHANGELOG.md +2 -0
- package/README.md +15 -21
- package/defaultConfig/bilibili/config.yaml +6 -0
- package/defaultConfig/help/help.yaml +2 -2
- package/lib/apps/bilibili.js +6 -6
- package/lib/apps/help.js +1 -1
- package/lib/apps/version.js +1 -1
- package/lib/apps/weibo.js +1 -1
- package/lib/components/dynamic/Footer.js +1 -1
- package/lib/components/help/Help.js +1 -1
- package/lib/components/version/Version.js +1 -1
- package/lib/index.js +2 -2
- package/lib/main.js +11 -0
- package/lib/models/bilibili/bilibili.main.api.js +125 -0
- package/lib/models/bilibili/{bilibili.get.web.data.js → bilibili.main.get.web.data.js} +19 -10
- package/lib/models/bilibili/{bilibili.models.js → bilibili.main.models.js} +57 -45
- package/lib/models/bilibili/{bilibili.query.js → bilibili.main.query.js} +3 -3
- package/lib/models/bilibili/{bilibili.task.js → bilibili.main.task.js} +26 -30
- package/lib/models/bilibili/bilibili.risk.buid.fp.js +77 -0
- package/lib/models/bilibili/bilibili.risk.dm.img.js +17 -0
- package/lib/models/bilibili/{bilibili.ticket.js → bilibili.risk.ticket.js} +1 -1
- package/lib/models/bilibili/bilibili.risk.w_webid.js +43 -0
- package/lib/models/weibo/weibo.get.web.data.js +1 -1
- package/lib/models/weibo/weibo.query.js +1 -1
- package/lib/models/weibo/weibo.task.js +8 -6
- package/lib/utils/config.js +3 -3
- package/lib/utils/image.js +4 -4
- package/package.json +20 -35
- package/lib/apps/bilibili.d.ts +0 -6
- package/lib/apps/help.d.ts +0 -6
- package/lib/apps/index.d.ts +0 -4
- package/lib/apps/version.d.ts +0 -6
- package/lib/apps/weibo.d.ts +0 -6
- package/lib/components/dynamic/Account.d.ts +0 -13
- package/lib/components/dynamic/Content.d.ts +0 -12
- package/lib/components/dynamic/Footer.d.ts +0 -11
- package/lib/components/dynamic/ForwardContent.d.ts +0 -6
- package/lib/components/dynamic/LogoText.d.ts +0 -9
- package/lib/components/dynamic/MainPage.d.ts +0 -34
- package/lib/components/help/Help.d.ts +0 -12
- package/lib/components/index.d.ts +0 -5
- package/lib/components/loginQrcode/Page.d.ts +0 -7
- package/lib/components/version/Version.d.ts +0 -8
- package/lib/index.d.ts +0 -5
- package/lib/main.d.ts +0 -1
- package/lib/models/bilibili/bilibili.api.d.ts +0 -70
- package/lib/models/bilibili/bilibili.api.js +0 -78
- package/lib/models/bilibili/bilibili.buid.fp.d.ts +0 -2
- package/lib/models/bilibili/bilibili.get.web.data.d.ts +0 -9
- package/lib/models/bilibili/bilibili.models.d.ts +0 -63
- package/lib/models/bilibili/bilibili.query.d.ts +0 -49
- package/lib/models/bilibili/bilibili.task.d.ts +0 -77
- package/lib/models/bilibili/bilibili.ticket.d.ts +0 -12
- package/lib/models/bilibili/bilibili.wbi.d.ts +0 -11
- package/lib/models/help/help.d.ts +0 -8
- package/lib/models/version/version.d.ts +0 -17
- package/lib/models/weibo/weibo.api.d.ts +0 -18
- package/lib/models/weibo/weibo.get.web.data.d.ts +0 -11
- package/lib/models/weibo/weibo.query.d.ts +0 -38
- package/lib/models/weibo/weibo.task.d.ts +0 -84
- package/lib/utils/config.d.ts +0 -73
- package/lib/utils/image.d.ts +0 -15
- package/lib/utils/paths.d.ts +0 -22
- package/lib/utils/puppeteer.render.d.ts +0 -40
- package/public/output.css +0 -1
- package/resources/img/readme/mini-help.jpg +0 -0
- /package/lib/models/bilibili/{bilibili.wbi.js → bilibili.risk.wbi.js} +0 -0
package/.puppeteerrc.cjs
CHANGED
package/CHANGELOG.md
CHANGED
package/README.md
CHANGED
|
@@ -11,12 +11,12 @@
|
|
|
11
11
|
# 🌰一、安装插件
|
|
12
12
|
|
|
13
13
|
## 选择安装方式
|
|
14
|
-
按照网络情况以及使用的bot框架是`
|
|
14
|
+
按照网络情况以及使用的bot框架是`Yunzaijs`还是`Yunzai-V3`,选择对应的安装方式。
|
|
15
15
|
|
|
16
|
-
### ***(一)
|
|
16
|
+
### ***(一)YunzaiJS***
|
|
17
17
|
> 选择其中一种方式安装插件:
|
|
18
18
|
|
|
19
|
-
1. npm包安装到`
|
|
19
|
+
1. npm包安装到`yunzaijs/node_modules`的方式,仅YunzaiJS支持:
|
|
20
20
|
```
|
|
21
21
|
yarn add yz-yuki-plugin -W
|
|
22
22
|
```
|
|
@@ -25,26 +25,26 @@
|
|
|
25
25
|
|
|
26
26
|
* 方式1(推荐):
|
|
27
27
|
|
|
28
|
-
手动新建 `
|
|
28
|
+
手动新建 `yunzaijs/yunzai.config.json` 文件,输入如下内容,`applications`字段添加的 `"yz-yuki-plugin"`即为启用本插件:
|
|
29
29
|
|
|
30
30
|
```json
|
|
31
31
|
{
|
|
32
|
-
"applications": ["
|
|
33
|
-
"middlewares": ["
|
|
32
|
+
"applications": ["@yunzaijs/system", "yz-yuki-plugin"],
|
|
33
|
+
"middlewares": ["@yunzaijs/mys/message", "@yunzaijs/mys/runtime"]
|
|
34
34
|
}
|
|
35
35
|
```
|
|
36
36
|
* 方式2:
|
|
37
37
|
|
|
38
|
-
修改 `
|
|
38
|
+
修改 `yunzaijs/yunzai.config.js`:
|
|
39
39
|
```js
|
|
40
|
-
import { defineConfig } from '
|
|
40
|
+
import { defineConfig } from 'yunzaijs'
|
|
41
41
|
export default defineConfig({
|
|
42
|
-
applications: [
|
|
43
|
-
middlewares: [
|
|
42
|
+
applications: ["@yunzaijs/system", "yz-yuki-plugin"], //该行添加 'yz-yuki-plugin'
|
|
43
|
+
middlewares: ["@yunzaijs/mys/message", "@yunzaijs/mys/runtime"]
|
|
44
44
|
})
|
|
45
45
|
```
|
|
46
46
|
|
|
47
|
-
2. 安装到 `
|
|
47
|
+
2. 安装到 `yunzaijs/plugins` 的方式:
|
|
48
48
|
|
|
49
49
|
> 仅支持Yunzai-Next的分支,选择仓库:
|
|
50
50
|
|
|
@@ -179,14 +179,8 @@ https://m.weibo.cn/u/7643376782 # 7643376782 为崩坏星穹铁道博主uid
|
|
|
179
179
|
||||
|
|
180
180
|
| **其他指令** | | |
|
|
181
181
|
| 查看版本信息 | 查看版本信息 | `#优纪版本` |
|
|
182
|
-
| 更新yuki插件 | 系统指令更新yuki插件,
|
|
183
|
-
| 强制更新yuki插件 | 强制更新yuki插件,
|
|
184
|
-
|
|
185
|
-
</details>
|
|
186
|
-
|
|
187
|
-
<details><summary>样式预览,点击展开</summary>
|
|
188
|
-
|
|
189
|
-

|
|
182
|
+
| 更新yuki插件 | 系统指令更新yuki插件,yunzaiJS需安装`@yunzaijs/system` | `#更新yuki-plugin` |
|
|
183
|
+
| 强制更新yuki插件 | 强制更新yuki插件,yunzaiJS需安装`@yunzaijs/system`| `#强制更新yuki-plugin` |
|
|
190
184
|
|
|
191
185
|
</details>
|
|
192
186
|
|
|
@@ -229,8 +223,8 @@ yarn install
|
|
|
229
223
|
| Nickname | Contribution |
|
|
230
224
|
| :-----------------------------------------------------------------: | ----------------------- |
|
|
231
225
|
|Yunzai-Next||
|
|
232
|
-
| [
|
|
233
|
-
| [
|
|
226
|
+
| [YunzaiJS文档](https://yunzaijs.github.io/docs/) | YunzaiJS 文档 |
|
|
227
|
+
| [YunzaiJS 仓库](https://github.com/yunzaijs/core) | YunzaiJS |
|
|
234
228
|
|Yunzai-V3||
|
|
235
229
|
| [功能/插件库](https://gitee.com/yhArcadia/Yunzai-Bot-plugins-index) | Yunzai-Bot 相关内容索引 |
|
|
236
230
|
| [TRSS-Yunzai](https://gitee.com/TimeRainStarSky/Yunzai) | 时雨🌌星空的 TRSS-Yunzai |
|
|
@@ -8,6 +8,12 @@ pushStatus: 1
|
|
|
8
8
|
# "0 5,35,51 * * * *" #每小时固定第5分0秒、第35分0秒、第51分0秒检测一次,共3次/h
|
|
9
9
|
pushTime: '*/23 * * * *'
|
|
10
10
|
|
|
11
|
+
# 请求头 User-Agent 列表。如出现 -352 风控,可尝试更换请求头,请根据需要自行添加或修改。可设置多个请求头,每次重启后会随机选择一个。获取方法请浏览器自行搜索。
|
|
12
|
+
userAgentList:
|
|
13
|
+
- Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36
|
|
14
|
+
#- Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:131.0) Gecko/20100101 Firefox/131.0
|
|
15
|
+
#- Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36 Edg/130.0.0.0
|
|
16
|
+
|
|
11
17
|
# 推送监测间隔,单位为秒,默认7200秒即2小时,即以当前时间为基准,监测过去2小时内的动态,并推送。取值范围:3600-36000秒,即过去的1-10h。应大于pushTime的周期。
|
|
12
18
|
interval: 7200
|
|
13
19
|
|
|
@@ -80,7 +80,7 @@
|
|
|
80
80
|
desc: 查看版本信息
|
|
81
81
|
- icon: 钓鱼
|
|
82
82
|
title: '#更新yuki-plugin'
|
|
83
|
-
desc: '系统指令更新yuki插件,
|
|
83
|
+
desc: '系统指令更新yuki插件,yunzaiJS需安装`@yunzaijs/system`'
|
|
84
84
|
- icon: pluie_lotus
|
|
85
85
|
title: '#强制更新yuki-plugin'
|
|
86
|
-
desc: '强制更新yuki插件,
|
|
86
|
+
desc: '强制更新yuki插件,yunzaiJS需安装`@yunzaijs/system`'
|
package/lib/apps/bilibili.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import JSON from 'json5';
|
|
2
2
|
import lodash from 'lodash';
|
|
3
|
-
import { Messages, Bot, Redis } from '
|
|
4
|
-
import { BiliQuery } from '../models/bilibili/bilibili.query.js';
|
|
5
|
-
import { BiliTask } from '../models/bilibili/bilibili.task.js';
|
|
3
|
+
import { Messages, Bot, Redis } from 'yunzaijs';
|
|
4
|
+
import { BiliQuery } from '../models/bilibili/bilibili.main.query.js';
|
|
5
|
+
import { BiliTask } from '../models/bilibili/bilibili.main.task.js';
|
|
6
6
|
import Config from '../utils/config.js';
|
|
7
|
-
import { BiliGetWebData } from '../models/bilibili/bilibili.get.web.data.js';
|
|
8
|
-
import { applyLoginQRCode, pollLoginQRCode, saveLoginCookie, postGateway, exitBiliLogin, checkBiliLogin, readSavedCookieItems, saveLocalBiliCk, readSyncCookie, getNewTempCk, readTempCk } from '../models/bilibili/bilibili.models.js';
|
|
7
|
+
import { BiliGetWebData } from '../models/bilibili/bilibili.main.get.web.data.js';
|
|
8
|
+
import { applyLoginQRCode, pollLoginQRCode, saveLoginCookie, postGateway, exitBiliLogin, checkBiliLogin, readSavedCookieItems, saveLocalBiliCk, readSyncCookie, getNewTempCk, readTempCk } from '../models/bilibili/bilibili.main.models.js';
|
|
9
9
|
|
|
10
10
|
const message = new Messages('message');
|
|
11
11
|
let biliPushData = Config.getConfigData('config', 'bilibili', 'push');
|
|
@@ -205,7 +205,7 @@ message.use(async (e) => {
|
|
|
205
205
|
if (e.isMaster) {
|
|
206
206
|
await exitBiliLogin(e);
|
|
207
207
|
await Redis.set('Yz:yuki:bili:loginCookie', '', { EX: 3600 * 24 * 180 });
|
|
208
|
-
e.reply(
|
|
208
|
+
e.reply(`扫码登陆的B站cookie已删除~`);
|
|
209
209
|
}
|
|
210
210
|
else {
|
|
211
211
|
e.reply('未取得bot主人身份,无权限删除B站登录ck');
|
package/lib/apps/help.js
CHANGED
package/lib/apps/version.js
CHANGED
package/lib/apps/weibo.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { ConfigController, BOT_NAME } from '
|
|
2
|
+
import { ConfigController, BOT_NAME } from 'yunzaijs';
|
|
3
3
|
import Config from '../../utils/config.js';
|
|
4
4
|
import path from 'path';
|
|
5
5
|
import { _paths, createRequire } from '../../utils/paths.js';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { BOT_NAME, ConfigController } from '
|
|
2
|
+
import { BOT_NAME, ConfigController } from 'yunzaijs';
|
|
3
3
|
import Config from '../../utils/config.js';
|
|
4
4
|
import path from 'path';
|
|
5
5
|
import { _paths, createRequire } from '../../utils/paths.js';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { BOT_NAME, ConfigController } from '
|
|
2
|
+
import { BOT_NAME, ConfigController } from 'yunzaijs';
|
|
3
3
|
import Config from '../../utils/config.js';
|
|
4
4
|
import path from 'path';
|
|
5
5
|
import { _paths, createRequire } from '../../utils/paths.js';
|
package/lib/index.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
|
-
import { applicationOptions, setBotTask, useEvent } from '
|
|
2
|
+
import { applicationOptions, setBotTask, useEvent } from 'yunzaijs';
|
|
3
3
|
import Config from './utils/config.js';
|
|
4
4
|
import path from 'path';
|
|
5
5
|
import { _paths } from './utils/paths.js';
|
|
6
6
|
import * as index$1 from './apps/index.js';
|
|
7
|
-
import { BiliTask } from './models/bilibili/bilibili.task.js';
|
|
7
|
+
import { BiliTask } from './models/bilibili/bilibili.main.task.js';
|
|
8
8
|
import { WeiboTask } from './models/weibo/weibo.task.js';
|
|
9
9
|
|
|
10
10
|
const yukiPluginVersion = Config.getPackageJsonKey('version', path.join(_paths.pluginPath, 'package.json'));
|
package/lib/main.js
ADDED
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import Config from '../../utils/config.js';
|
|
2
|
+
|
|
3
|
+
class BiliApi {
|
|
4
|
+
biliConfigData;
|
|
5
|
+
USER_AGENT;
|
|
6
|
+
constructor() {
|
|
7
|
+
this.biliConfigData = Config.getUserConfig('bilibili', 'config');
|
|
8
|
+
this.USER_AGENT = BiliApi.BILIBILI_USER_AGENT;
|
|
9
|
+
this.initialize();
|
|
10
|
+
}
|
|
11
|
+
static BILIBILI_USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36';
|
|
12
|
+
//初始化User-Agent
|
|
13
|
+
async initialize() {
|
|
14
|
+
await this.initUserAgent();
|
|
15
|
+
}
|
|
16
|
+
async initUserAgent() {
|
|
17
|
+
const userAgentList = await this.biliConfigData.userAgentList;
|
|
18
|
+
if (userAgentList && userAgentList.length > 0) {
|
|
19
|
+
const randomIndex = Math.floor(Math.random() * userAgentList.length);
|
|
20
|
+
this.USER_AGENT = String(userAgentList[randomIndex]);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
// 将静态常量赋值给实例属性
|
|
24
|
+
get BILIBIL_API() {
|
|
25
|
+
return {
|
|
26
|
+
//获取动态资源列表 wbi/无wbi parama = { host_mid: uid, timezone_offset: -480, platform: 'web', features: 'itemOpusStyle,listOnlyfans,opusBigCover,onlyfansVote', web_location: "333.999", ...getDmImg(), "x-bili-device-req-json": { "platform": "web", "device": "pc" }, "x-bili-web-req-json": { "spm_id": "333.999" }, w_rid, wts }
|
|
27
|
+
biliDynamicInfoList: `https://api.bilibili.com/x/polymer/web-dynamic/v1/feed/space`,
|
|
28
|
+
//获取关注数与粉丝数 parama = { vmid: uid }
|
|
29
|
+
biliUpFollowFans: `https://api.bilibili.com/x/relation/stat`,
|
|
30
|
+
//通过uid获取up详情 parama = { mid: uid, jsonp: jsonp }
|
|
31
|
+
biliSpaceUserInfo: `https://api.bilibili.com/x/space/acc/info`,
|
|
32
|
+
//parama = { mid: uid, token: '',platform: 'web', web_location: 1550101, w_webid, w_rid, wts }
|
|
33
|
+
biliSpaceUserInfoWbi: `https://api.bilibili.com/x/space/wbi/acc/info`,
|
|
34
|
+
//通过关键词${upKeyword}搜索up主 parama = { keyword: 'upKeyword', page: 1, search_type: 'bili_user', order: 'totalrank', pagesize: 5 }
|
|
35
|
+
biliSearchUp: `https://api.bilibili.com/x/web-interface/search/type`,
|
|
36
|
+
//通过关键词${upKeyword}搜索up主 parama = { keyword: 'upKeyword', page: 1, search_type: 'bili_user', order: 'totalrank' },需要wbi签名
|
|
37
|
+
biliSearchUpWbi: `https://api.bilibili.com/x/web-interface/wbi/search/type`,
|
|
38
|
+
biliLiveStatus: 'https://api.live.bilibili.com/room/v1/Room/get_status_info_by_uids',
|
|
39
|
+
biliCard: 'https://api.bilibili.com/x/web-interface/card',
|
|
40
|
+
biliStat: 'https://api.bilibili.com/x/relation/stat',
|
|
41
|
+
biliLiveUserInfo: 'https://api.live.bilibili.com/live_user/v1/Master/info',
|
|
42
|
+
biliOpusDetail: 'https://api.bilibili.com/x/polymer/web-dynamic/v1/opus/detail'
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
/**header */
|
|
46
|
+
get BILIBILI_HEADERS() {
|
|
47
|
+
return {
|
|
48
|
+
'Accept': '*/*',
|
|
49
|
+
'Accept-Language': 'zh-CN,en-US;q=0.5',
|
|
50
|
+
'Connection': 'keep-alive',
|
|
51
|
+
'Accept-Encoding': 'gzip, deflate, br, zstd',
|
|
52
|
+
'Cookie': '',
|
|
53
|
+
'pragma': 'no-cache',
|
|
54
|
+
'Cache-control': 'max-age=0',
|
|
55
|
+
'DNT': '1',
|
|
56
|
+
'Sec-GPC': '1',
|
|
57
|
+
'sec-ch-ua-platform': '',
|
|
58
|
+
'sec-ch-ua-mobile': '?0',
|
|
59
|
+
'Sec-Fetch-Dest': 'empty',
|
|
60
|
+
'Sec-Fetch-Mode': 'cors',
|
|
61
|
+
'Sec-Fetch-Site': 'same-site',
|
|
62
|
+
'Sec-Fetch-User': '?0',
|
|
63
|
+
'Priority': 'u=4',
|
|
64
|
+
'TE': 'trailers',
|
|
65
|
+
'User-Agent': this.USER_AGENT
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
/**Login header */
|
|
69
|
+
get BIlIBILI_LOGIN_HEADERS() {
|
|
70
|
+
return {
|
|
71
|
+
'Accept': '*/*',
|
|
72
|
+
'Accept-Language': 'zh-CN,en-US;q=0.5',
|
|
73
|
+
'Accept-Encoding': 'gzip, deflate, br, zstd',
|
|
74
|
+
'DNT': '1',
|
|
75
|
+
'Sec-GPC': '1',
|
|
76
|
+
'Upgrade-Insecure-Requests': '1',
|
|
77
|
+
'Sec-Fetch-Dest': 'document',
|
|
78
|
+
'Sec-Fetch-Mode': 'navigate',
|
|
79
|
+
'Sec-Fetch-Site': 'none',
|
|
80
|
+
'Sec-Fetch-User': '?1',
|
|
81
|
+
'TE': 'trailers'
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
/**FullArticle header */
|
|
85
|
+
get BILIBILI_ARTICLE_HEADERS() {
|
|
86
|
+
return {
|
|
87
|
+
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/png,image/svg+xml,*/*;q=0.8',
|
|
88
|
+
'Accept-Language': 'zh-CN,en-US;q=0.5',
|
|
89
|
+
'Accept-Encoding': 'gzip, deflate, br, zstd',
|
|
90
|
+
'Content-type': 'text/html; charset=utf-8',
|
|
91
|
+
'Cookie': '',
|
|
92
|
+
'pragma': 'no-cache',
|
|
93
|
+
'Cache-control': 'no-cache',
|
|
94
|
+
'DNT': '1',
|
|
95
|
+
'Sec-GPC': '1',
|
|
96
|
+
'sec-ch-ua-mobile': '?0',
|
|
97
|
+
'Sec-Fetch-Dest': 'document',
|
|
98
|
+
'Sec-Fetch-Mode': 'navigate',
|
|
99
|
+
'Sec-Fetch-Site': 'same-site',
|
|
100
|
+
'Sec-Fetch-User': '?1',
|
|
101
|
+
'TE': 'trailers',
|
|
102
|
+
'Upgrade-Insecure-Requests': '1',
|
|
103
|
+
'User-Agent': this.USER_AGENT
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
get BILIBILI_DYNAMIC_SPACE_HEADERS() {
|
|
107
|
+
return {
|
|
108
|
+
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
|
|
109
|
+
'Accept-Encoding': 'gzip, deflate, br, zstd',
|
|
110
|
+
'Accept-Language': 'zh-CN,en-US;q=0.5',
|
|
111
|
+
'Connection': 'keep-alive',
|
|
112
|
+
'Priority': 'u=0, i',
|
|
113
|
+
'Sec-Fetch-Dest': 'document',
|
|
114
|
+
'Sec-Fetch-Mode': 'navigate',
|
|
115
|
+
'Sec-Fetch-Site': 'none',
|
|
116
|
+
'Sec-Fetch-User': '?1',
|
|
117
|
+
'Sec-GPC': '1',
|
|
118
|
+
'Upgrade-Insecure-Requests': '1',
|
|
119
|
+
'User-Agent': this.USER_AGENT
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
var BiliApi$1 = new BiliApi();
|
|
124
|
+
|
|
125
|
+
export { BiliApi$1 as default };
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import axios from 'axios';
|
|
2
2
|
import lodash from 'lodash';
|
|
3
|
-
import
|
|
4
|
-
import { readSyncCookie, cookieWithBiliTicket, readSavedCookieItems, readSavedCookieOtherItems } from './bilibili.models.js';
|
|
5
|
-
import { getWbiSign } from './bilibili.wbi.js';
|
|
3
|
+
import BiliApi from './bilibili.main.api.js';
|
|
4
|
+
import { readSyncCookie, cookieWithBiliTicket, readSavedCookieItems, readSavedCookieOtherItems } from './bilibili.main.models.js';
|
|
5
|
+
import { getWbiSign } from './bilibili.risk.wbi.js';
|
|
6
|
+
import { getDmImg } from './bilibili.risk.dm.img.js';
|
|
7
|
+
import { getWebId } from './bilibili.risk.w_webid.js';
|
|
6
8
|
|
|
7
9
|
class BiliGetWebData {
|
|
8
10
|
constructor(e) { }
|
|
@@ -11,14 +13,15 @@ class BiliGetWebData {
|
|
|
11
13
|
const url = BiliApi.BILIBIL_API.biliDynamicInfoList;
|
|
12
14
|
let { cookie } = await readSyncCookie();
|
|
13
15
|
cookie = await cookieWithBiliTicket(cookie);
|
|
16
|
+
const dmImg = await getDmImg();
|
|
14
17
|
const data = {
|
|
15
18
|
'offset': '',
|
|
16
19
|
'host_mid': uid,
|
|
17
20
|
'timezone_offset': -480,
|
|
18
21
|
'platform': 'web',
|
|
19
|
-
'features': 'itemOpusStyle,listOnlyfans,opusBigCover,onlyfansVote',
|
|
22
|
+
'features': 'itemOpusStyle,listOnlyfans,opusBigCover,onlyfansVote,decorationCard,forwardListHidden,ugcDelete,onlyfansQaCard',
|
|
20
23
|
'web_location': '333.999',
|
|
21
|
-
|
|
24
|
+
...dmImg,
|
|
22
25
|
'x-bili-device-req-json': { platform: 'web', device: 'pc' },
|
|
23
26
|
'x-bili-web-req-json': { spm_id: '333.999' }
|
|
24
27
|
};
|
|
@@ -35,8 +38,8 @@ class BiliGetWebData {
|
|
|
35
38
|
headers: lodash.merge(BiliApi.BILIBILI_HEADERS, {
|
|
36
39
|
Cookie: `${cookie}`,
|
|
37
40
|
Host: `api.bilibili.com`,
|
|
38
|
-
Origin: 'https://
|
|
39
|
-
Referer: `https://
|
|
41
|
+
Origin: 'https://space.bilibili.com',
|
|
42
|
+
Referer: `https://space.bilibili.com/${uid}/dynamic`
|
|
40
43
|
})
|
|
41
44
|
});
|
|
42
45
|
return res;
|
|
@@ -46,14 +49,20 @@ class BiliGetWebData {
|
|
|
46
49
|
const url = BiliApi.BILIBIL_API.biliSpaceUserInfoWbi;
|
|
47
50
|
let { cookie } = await readSyncCookie();
|
|
48
51
|
cookie = await cookieWithBiliTicket(cookie);
|
|
52
|
+
const dmImg = await getDmImg();
|
|
49
53
|
const data = {
|
|
50
54
|
mid: uid,
|
|
51
|
-
|
|
55
|
+
token: '',
|
|
56
|
+
platform: 'web',
|
|
57
|
+
web_location: 1550101,
|
|
58
|
+
...dmImg
|
|
52
59
|
};
|
|
53
60
|
let signCookie = (await readSavedCookieItems(cookie, ['SESSDATA'], false)) || (await readSavedCookieOtherItems(cookie, ['SESSDATA']));
|
|
61
|
+
const w_webid = await getWebId(uid);
|
|
54
62
|
const { w_rid, time_stamp } = await getWbiSign(data, BiliApi.BILIBILI_HEADERS, signCookie);
|
|
55
63
|
const params = {
|
|
56
64
|
...data,
|
|
65
|
+
w_webid: w_webid,
|
|
57
66
|
w_rid: w_rid,
|
|
58
67
|
wts: time_stamp
|
|
59
68
|
};
|
|
@@ -63,8 +72,8 @@ class BiliGetWebData {
|
|
|
63
72
|
headers: lodash.merge(BiliApi.BILIBILI_HEADERS, {
|
|
64
73
|
Cookie: `${cookie}`,
|
|
65
74
|
Host: `api.bilibili.com`,
|
|
66
|
-
Origin: 'https://
|
|
67
|
-
Referer: `https://
|
|
75
|
+
Origin: 'https://space.bilibili.com',
|
|
76
|
+
Referer: `https://space.bilibili.com/${uid}/dynamic`
|
|
68
77
|
})
|
|
69
78
|
});
|
|
70
79
|
return res;
|
|
@@ -6,11 +6,12 @@ import { promisify } from 'node:util';
|
|
|
6
6
|
import path from 'path';
|
|
7
7
|
import QRCode from 'qrcode';
|
|
8
8
|
import YAML from 'yaml';
|
|
9
|
-
import { Segment, Bot, Redis } from '
|
|
9
|
+
import { Segment, Bot, Redis } from 'yunzaijs';
|
|
10
10
|
import { renderPage } from '../../utils/image.js';
|
|
11
11
|
import { _paths } from '../../utils/paths.js';
|
|
12
|
-
import
|
|
13
|
-
import {
|
|
12
|
+
import BiliApi from './bilibili.main.api.js';
|
|
13
|
+
import { gen_buvid_fp } from './bilibili.risk.buid.fp.js';
|
|
14
|
+
import { getBiliTicket } from './bilibili.risk.ticket.js';
|
|
14
15
|
|
|
15
16
|
/**
|
|
16
17
|
* *******************************************************************
|
|
@@ -60,8 +61,8 @@ async function applyLoginQRCode(e) {
|
|
|
60
61
|
return qrcodeKey;
|
|
61
62
|
}
|
|
62
63
|
else {
|
|
63
|
-
e.reply(`获取B站登录二维码失败: ${res.data
|
|
64
|
-
throw new Error(`获取B站登录二维码失败: ${res.data
|
|
64
|
+
e.reply(`获取B站登录二维码失败: ${res.data?.message}`);
|
|
65
|
+
throw new Error(`获取B站登录二维码失败: ${res.data?.message}`);
|
|
65
66
|
}
|
|
66
67
|
}
|
|
67
68
|
/**处理扫码结果 */
|
|
@@ -149,12 +150,16 @@ async function exitBiliLogin(e) {
|
|
|
149
150
|
e.reply('当前无可用的B站登录CK可退出登录');
|
|
150
151
|
return;
|
|
151
152
|
}
|
|
152
|
-
const postData =
|
|
153
|
+
const postData = String(biliCSRF)
|
|
154
|
+
.trim()
|
|
155
|
+
.replace(/^bili_jct=/g, '')
|
|
156
|
+
.replace(/;*$/g, '');
|
|
153
157
|
try {
|
|
154
|
-
const resp = await axios.post(url, postData
|
|
158
|
+
const resp = await axios.post(url, { biliCSRF: postData }, {
|
|
155
159
|
headers: {
|
|
156
160
|
'Host': 'passport.bilibili.com',
|
|
157
|
-
'
|
|
161
|
+
'User-Agent': BiliApi.BILIBILI_HEADERS['User-Agent'],
|
|
162
|
+
'Cookie': `${DedeUserID};${biliCSRF};${SESSDATA}`,
|
|
158
163
|
'Content-Type': 'application/x-www-form-urlencoded'
|
|
159
164
|
}
|
|
160
165
|
});
|
|
@@ -163,29 +168,27 @@ async function exitBiliLogin(e) {
|
|
|
163
168
|
e.reply('当前缓存的B站登录CK早已失效!');
|
|
164
169
|
return;
|
|
165
170
|
}
|
|
166
|
-
const
|
|
167
|
-
logger.
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
else {
|
|
183
|
-
e.reply('服务器响应异常,退出登录请求出错');
|
|
171
|
+
const res = resp.data;
|
|
172
|
+
logger?.debug(`exitBiliLogin: ${JSON.stringify(res)}`);
|
|
173
|
+
const { code } = res;
|
|
174
|
+
switch (code) {
|
|
175
|
+
case 0:
|
|
176
|
+
e.reply('当前缓存的B站登录CK已在B站服务器退出登录~');
|
|
177
|
+
break;
|
|
178
|
+
case 2202:
|
|
179
|
+
e.reply('csrf 请求非法,退出登录请求出错');
|
|
180
|
+
break;
|
|
181
|
+
case -101:
|
|
182
|
+
e.reply('当前缓存的扫码B站ck未登录!');
|
|
183
|
+
break;
|
|
184
|
+
default:
|
|
185
|
+
e.reply('未知情况!无妨');
|
|
186
|
+
return;
|
|
184
187
|
}
|
|
185
188
|
}
|
|
186
189
|
catch (error) {
|
|
190
|
+
e.reply('退出登录请求出错');
|
|
187
191
|
console.error('Error during Bili login exit:', error);
|
|
188
|
-
e.reply('退出登录请求出错,请稍后再试');
|
|
189
192
|
}
|
|
190
193
|
}
|
|
191
194
|
/**
|
|
@@ -397,18 +400,18 @@ async function getPayload(cookie) {
|
|
|
397
400
|
'7003': 1, // indexedDb, !!window.indexedDB, html5 api
|
|
398
401
|
'807e': 1, // cookieEnabled, navigator.cookieEnabled
|
|
399
402
|
'b8ce': BiliApi.BILIBILI_HEADERS['User-Agent'], // ua "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:127.0) Gecko/20100101 Firefox/127.0",
|
|
400
|
-
'641c': 0,
|
|
401
|
-
'07a4': 'zh-CN',
|
|
402
|
-
'1c57': 'not available',
|
|
403
|
-
'0bd0': 16,
|
|
404
|
-
'748e': [1920, 1200],
|
|
405
|
-
'd61f': [1920, 1152],
|
|
406
|
-
'fc9d': -480,
|
|
407
|
-
'6aa9': 'Asia/Shanghai',
|
|
408
|
-
'75b8': 1,
|
|
409
|
-
'3b21': 1,
|
|
410
|
-
'8a1c': 0,
|
|
411
|
-
'd52f': 'not available',
|
|
403
|
+
'641c': 0, // webdriver, navigator.webdriver, like Selenium
|
|
404
|
+
'07a4': 'zh-CN', // language
|
|
405
|
+
'1c57': 'not available', // deviceMemory in GB, navigator.deviceMemory
|
|
406
|
+
'0bd0': 16, // hardwareConcurrency, navigator.hardwareConcurrency
|
|
407
|
+
'748e': [1920, 1200], // window.screen.width window.screen.height
|
|
408
|
+
'd61f': [1920, 1152], // window.screen.availWidth window.screen.availHeight
|
|
409
|
+
'fc9d': -480, // timezoneOffset, (new Date).getTimezoneOffset()
|
|
410
|
+
'6aa9': 'Asia/Shanghai', //Intl.DateTimeFormat().resolvedOptions().timeZone, // timezone, (new window.Intl.DateTimeFormat).resolvedOptions().timeZone
|
|
411
|
+
'75b8': 1, // sessionStorage, window.sessionStorage, html5 api
|
|
412
|
+
'3b21': 1, // localStorage, window.localStorage, html5 api
|
|
413
|
+
'8a1c': 0, // openDatabase, window.openDatabase, html5 api
|
|
414
|
+
'd52f': 'not available', // cpuClass, navigator.cpuClass
|
|
412
415
|
'adca': BiliApi.BILIBILI_HEADERS['User-Agent'].includes('Windows') ? 'Win32' : 'Linux', // platform, navigator.platform
|
|
413
416
|
'80c9': [
|
|
414
417
|
[
|
|
@@ -451,9 +454,9 @@ async function getPayload(cookie) {
|
|
|
451
454
|
['text/pdf', 'pdf']
|
|
452
455
|
]
|
|
453
456
|
]
|
|
454
|
-
],
|
|
455
|
-
'13ab': 'f3YAAAAASUVORK5CYII=',
|
|
456
|
-
'bfe9': 'kABYpRAGAVYzWJooB9Bf4P+UortSvxRY0AAAAASUVORK5CYII=',
|
|
457
|
+
], // plugins
|
|
458
|
+
'13ab': 'f3YAAAAASUVORK5CYII=', // canvas fingerprint
|
|
459
|
+
'bfe9': 'kABYpRAGAVYzWJooB9Bf4P+UortSvxRY0AAAAASUVORK5CYII=', // webgl_str
|
|
457
460
|
'a3c1': [
|
|
458
461
|
'extensions:ANGLE_instanced_arrays;EXT_blend_minmax;EXT_color_buffer_half_float;EXT_float_blend;EXT_frag_depth;EXT_shader_texture_lod;EXT_sRGB;EXT_texture_compression_bptc;EXT_texture_compression_rgtc;EXT_texture_filter_anisotropic;OES_element_index_uint;OES_fbo_render_mipmap;OES_standard_derivatives;OES_texture_float;OES_texture_float_linear;OES_texture_half_float;OES_texture_half_float_linear;OES_vertex_array_object;WEBGL_color_buffer_float;WEBGL_compressed_texture_s3tc;WEBGL_compressed_texture_s3tc_srgb;WEBGL_debug_renderer_info;WEBGL_debug_shaders;WEBGL_depth_texture;WEBGL_draw_buffers;WEBGL_lose_context;WEBGL_provoking_vertex',
|
|
459
462
|
'webgl aliased line width range:[1, 1]',
|
|
@@ -519,8 +522,8 @@ async function getPayload(cookie) {
|
|
|
519
522
|
'webgl fragment shader low int precision:0',
|
|
520
523
|
'webgl fragment shader low int precision rangeMin:31',
|
|
521
524
|
'webgl fragment shader low int precision rangeMax:30'
|
|
522
|
-
],
|
|
523
|
-
'6bc5': 'Google Inc. (Intel)~ANGLE (Intel, Intel(R) HD Graphics Direct3D11 vs_5_0 ps_5_0), or similar',
|
|
525
|
+
], // webgl_params, cab be set to [] if webgl is not supported
|
|
526
|
+
'6bc5': 'Google Inc. (Intel)~ANGLE (Intel, Intel(R) HD Graphics Direct3D11 vs_5_0 ps_5_0), or similar', // webglVendorAndRenderer
|
|
524
527
|
'ed31': 0,
|
|
525
528
|
'72bd': 0,
|
|
526
529
|
'097b': 0,
|
|
@@ -604,6 +607,15 @@ async function postGateway(cookie) {
|
|
|
604
607
|
throw error;
|
|
605
608
|
}
|
|
606
609
|
}
|
|
610
|
+
/**生成buvid_fp
|
|
611
|
+
* @param {string} uuid
|
|
612
|
+
*/
|
|
613
|
+
async function get_buvid_fp(cookie) {
|
|
614
|
+
const uuid = await readSavedCookieItems(cookie, ['_uuid'], false);
|
|
615
|
+
const seedget = Math.floor(Math.random() * (60 - 1 + 1) + 1);
|
|
616
|
+
let buvidFp = gen_buvid_fp(uuid, seedget);
|
|
617
|
+
return `buvid_fp=${buvidFp};`;
|
|
618
|
+
}
|
|
607
619
|
/**
|
|
608
620
|
* 获取有效bili_ticket并添加到cookie
|
|
609
621
|
* @param {string} cookie
|
|
@@ -630,4 +642,4 @@ async function cookieWithBiliTicket(cookie) {
|
|
|
630
642
|
}
|
|
631
643
|
}
|
|
632
644
|
|
|
633
|
-
export { applyLoginQRCode, checkBiliLogin, cookieWithBiliTicket, exitBiliLogin, genUUID, gen_b_lsid, getNewTempCk, pollLoginQRCode, postGateway, readSavedCookieItems, readSavedCookieOtherItems, readSyncCookie, readTempCk, saveLocalBiliCk, saveLoginCookie, saveTempCk };
|
|
645
|
+
export { applyLoginQRCode, checkBiliLogin, cookieWithBiliTicket, exitBiliLogin, genUUID, gen_b_lsid, getNewTempCk, get_buvid_fp, pollLoginQRCode, postGateway, readSavedCookieItems, readSavedCookieOtherItems, readSyncCookie, readTempCk, saveLocalBiliCk, saveLoginCookie, saveTempCk };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import moment from 'moment';
|
|
2
|
-
import { Bot, Segment } from '
|
|
3
|
-
import { readSyncCookie, cookieWithBiliTicket } from './bilibili.models.js';
|
|
4
|
-
import
|
|
2
|
+
import { Bot, Segment } from 'yunzaijs';
|
|
3
|
+
import { readSyncCookie, cookieWithBiliTicket } from './bilibili.main.models.js';
|
|
4
|
+
import BiliApi from './bilibili.main.api.js';
|
|
5
5
|
import axios from 'axios';
|
|
6
6
|
import lodash from 'lodash';
|
|
7
7
|
|