神代綺凛 commited on
Commit
36e431c
1 Parent(s): 76d16eb

feat: get buvid3 from api

Browse files
Files changed (1) hide show
  1. server/app.ts +15 -6
server/app.ts CHANGED
@@ -159,16 +159,20 @@ class LoginQr {
159
 
160
  if (result.code !== 0) return result;
161
 
162
- const cookie = await this.getBasicCookie();
163
- cookie.add(r0.headers.getSetCookie());
164
- result.cookie = cookie.del('i-wanna-go-back').toString();
 
 
165
 
166
  return result;
167
  }
168
 
169
- private async getBasicCookie() {
170
- const r = await fetch('https://www.bilibili.com/', { method: 'HEAD' });
171
- return new Cookie(r.headers.getSetCookie());
 
 
172
  }
173
  }
174
 
@@ -179,6 +183,11 @@ class Cookie {
179
  if (cookies) this.add(cookies);
180
  }
181
 
 
 
 
 
 
182
  public add(cookies: string[]) {
183
  cookies.forEach(str => {
184
  const [nv] = str.split(';');
 
159
 
160
  if (result.code !== 0) return result;
161
 
162
+ result.cookie = new Cookie()
163
+ .set('buvid3', await this.getBuvid3())
164
+ .add(r0.headers.getSetCookie())
165
+ .del('i-wanna-go-back')
166
+ .toString();
167
 
168
  return result;
169
  }
170
 
171
+ private async getBuvid3() {
172
+ const r = await fetch('https://api.bilibili.com/x/frontend/finger/spi', { headers: this.header });
173
+ const { code, message, data } = await r.json();
174
+ if (code !== 0) throw new Error(message);
175
+ return data.b_3;
176
  }
177
  }
178
 
 
183
  if (cookies) this.add(cookies);
184
  }
185
 
186
+ public set(name: string, value: string) {
187
+ this.cookie.set(name, value);
188
+ return this;
189
+ }
190
+
191
  public add(cookies: string[]) {
192
  cookies.forEach(str => {
193
  const [nv] = str.split(';');