返回提交历史
Modified
docs/login/login_action/SMS.md
+201
-0
XFEstudio/bilibili-API-collect
添加app短信登录接口 (#685)
* Update SMS.md * Update SMS.md
8e2a4a9
代码差异
1 个文件
+201
-0
@@ -89,6 +89,102 @@ curl 'https://passport.bilibili.com/web/generic/country/list'
89
89
90
90
</details>
91
91
92
93
## 发送短信验证码_app端
94
95
> https://passport.bilibili.com/x/passport-login/sms/send
96
97
*请求方式:POST*
98
99
同手机号短信发送 CD 时间为 60s
100
101
短信验证码 timeout 为 5min
102
103
验证内容由第一次返回进行处理,解析recaptcha_url的params传到极验进行验证后取到验证结果入参后再次调用即可
104
105
**正文参数 (application/x-www-form-urlencoded):**
106
107
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
108
| --- | --- | --- | --- | --- |
109
| cid | num | 国际冠字码 | 必要 | 可以从[获取国际冠字码](#获取国际冠字码(web端))获取 |
110
| tel | num | 手机号码 | 必要 | |
111
| login_session_id | str | 登录标识 | 必要 | uuid去掉'-'后得到
112
| recaptcha_token | str | 登录 API token | 必要 | 在[申请 captcha 验证码](readme.md#申请captcha验证码)接口处获取 |
113
| gee_challenge | str | 极验 challenge | 必要 | 在[申请 captcha 验证码](readme.md#申请captcha验证码)接口处获取 |
114
| gee_validate | str | 极验 result | 必要 | 极验验证后得到 |
115
| gee_seccode | str | 极验 result +`\|jordan` | 必要 | 极验验证后得到 |
116
| channel | str | 通道? | 必要 | 一般固定值为"bili" |
117
| buvid | str | buvid | 必要 | 参考如下方法生成 |
118
| local_id | str | 同上 | 必要 | 同上 |
119
| statistics | str | ? | 必要 | 一般固定为{"appId":1,"platform":3,"version":"7.27.0","abtest":""},非key-value入参需要转URL编码 |
120
121
**json回复:**
122
123
根对象:
124
125
| 字段 | 类型 | 内容 | 备注 |
126
| ------ | ---- | -------- | --------- |
127
| code | num | 返回值 | 0:成功<br />-400:请求错误<br />1002:手机号格式错误<br />86203:短信发送次数已达上限<br />1003:验证码已经发送<br />1025:该手机号在哔哩哔哩有过永久封禁记录,无法再次注册或绑定新账号<br />2400:登录秘钥错误<br />2406:验证极验服务出错 |
128
| message | str | 错误信息 | 成功为0 |
129
| data | obj | 信息本体 | |
130
131
`data`对象:
132
133
| 字段 | 类型 | 内容 | 备注 |
134
| ----------- | ---- | -------------- | ------------------------ |
135
| captcha_key | str | 短信登录 token | 在下方传参时需要,请备用 |
136
137
**示例:**
138
139
例如手机号为`13888888888`,国际id为`1 (中国大陆)`,登录秘钥为`aabbccdd`,极验challenge为`2333`,极验结果为`666666`,进行发送短信验证码操作
140
141
```shell
142
curl 'https://passport.bilibili.com/x/passport-login/sms/send' \
143
--data-urlencode 'tel=13888888888' \
144
--data-urlencode 'cid=1' \
145
--data-urlencode 'login_session_id=669900' \
146
--data-urlencode 'recaptcha_token=aabbccdd' \
147
--data-urlencode 'gee_challenge=2333' \
148
--data-urlencode 'gee_validate=666666' \
149
--data-urlencode 'gee_seccode=666666|jordan' \
150
--data-urlencode 'channel=bili' \
151
--data-urlencode 'buvid=999999' \
152
--data-urlencode 'local_id=999999' \
153
--data-urlencode 'statistics=%7B%22appId%22%3A1%2C%22platform%22%3A3%2C%22version%22%3A%227.27.0%22%2C%22abtest%22%3A%22%22%7D'
154
```
155
156
生成buvid方法
157
``` javascript
158
static buvid() : string {
159
var mac = [];
160
for (let i = 0; i < 6; i++) {
161
var min = Math.min(0, 0xff)
162
var max = Math.max(0, 0xff)
163
var num = parseInt((Math.random() * (min - max + 1) + max).toString()).toString(16)
164
mac.push(num)
165
}
166
var md5 = this.md5(mac.join(':'));
167
var md5Arr = md5.split('');
168
return "XY${md5Arr[2]}${md5Arr[12]}${md5Arr[22]}${md5}"
169
}
170
```
171
172
<details>
173
<summary>查看响应示例:</summary>
174
175
```json
176
{"code":0,
177
"message":"0",
178
"ttl":1,
179
"data":{
180
"captcha_key":"7542f109c3318d74847626495c68c321",
181
"recaptcha_url":"...."
182
}
183
}
184
```
185
186
</details>
187
92
188
## 发送短信验证码_web端
93
189
94
190
> https://passport.bilibili.com/x/passport-login/web/sms/send
@@ -157,6 +253,111 @@ curl 'https://passport.bilibili.com/x/passport-login/web/sms/send' \
157
253
158
254
</details>
159
255
256
## 使用短信验证码登录_app端
257
258
> https://passport.bilibili.com/x/passport-login/login/sms
259
260
*请求方式:POST*
261
262
验证登录成功后会返回实体内容:
263
264
`mid` `expires_in` `access_token` `refresh_token`
265
266
**正文参数 (application/x-www-form-urlencoded):**
267
268
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
269
| --- | --- | --- | --- | --- |
270
| cid | num | 国际冠字码 | 必要 | 可以从[获取国际冠字码](#获取国际冠字码(web端))获取 |
271
| tel | num | 手机号码 | 必要 | |
272
| login_session_id | str | 登录标识 | 必要 | 必须与上述login_session_id保持一致
273
| code | num | 短信验证码 | 必要 | timeout 为 5min |
274
| captcha_key | str | 短信登录 token | 必要 | 从[上述API](#发送短信验证码(web端))请求成功后返回 |
275
276
**json回复:**
277
278
根对象:
279
280
| 字段 | 类型 | 内容 | 备注 |
281
| --- | --- | --- | --- |
282
| code | num | 返回值 | 0:成功<br />-400:请求错误<br />1006:请输入正确的短信验证码<br />1007:短信验证码已过期 |
283
| message | str | 错误信息 | |
284
| data | obj | 信息本体 | |
285
286
`data`对象:
287
288
| 字段 | 类型 | 内容 | 备注 |
289
| --- | --- | --- | --- |
290
| mid | str | 用户uid | |
291
| expires_in | str | 过时时间 | |
292
| access_token | str | 登录 token | |
293
| refresh_token | str | 刷新 token | |
294
| cookie_info | Array | cookie集合 | |
295
296
**示例:**
297
298
使用手机号`13888888888`,短信验证码为`123456`,进行验证登录操作
299
300
```shell
301
curl 'https://passport.bilibili.com/x/passport-login/login/sms'
302
--data-urlencode 'cid=1' \
303
--data-urlencode 'tel=13888888888' \
304
--data-urlencode 'code=123456' \
305
--data-urlencode 'captcha_key=999999' \
306
--data-urlencode 'login_session_id=669900'
307
```
308
309
<details>
310
<summary>查看响应示例:</summary>
311
312
```json
313
{
314
"code": 0,
315
"data": {
316
"token_info": {
317
"mid": "...",
318
"expires_in": "114514",
319
"access_token": "",
320
"refresh_token": ""
321
//...
322
},
323
"cookie_info":[
324
//...
325
],
326
"message": "0"
327
}
328
}
329
```
330
331
</details>
332
333
**响应头部抓包信息:**
334
335
可明显看见设置了几个cookie(填入浏览器即可成功登录)
336
337
<details>
338
<summary>查看响应示例:</summary>
339
340
```http
341
HTTP/1.1 200 OK
342
Date: Mon, 13 Jul 2020 09:57:33 GMT
343
Content-Type: application/json;charset=UTF-8
344
Content-Length: 78
345
Connection: keep-alive
346
Server: Apache-Coyote/1.1
347
Set-Cookie: DedeUserID=***; Domain=.bilibili.com; Expires=Sat, 18-Jul-2020 09:57:57 GMT; Path=/
348
Set-Cookie: DedeUserID__ckMd5=***; Domain=.bilibili.com; Expires=Sat, 18-Jul-2020 09:57:57 GMT; Path=/
349
Set-Cookie: SESSDATA=***; Domain=.bilibili.com; Expires=Sat, 18-Jul-2020 09:57:57 GMT; Path=/; HttpOnly
350
Set-Cookie: bili_jct=***; Domain=.bilibili.com; Expires=Sat, 18-Jul-2020 09:57:57 GMT; Path=/
351
Set-Cookie: sid=***; Domain=.bilibili.com; Expires=Sat, 18-Jul-2020 09:57:57 GMT; Path=/
352
Expires: Mon, 13 Jul 2020 09:57:32 GMT
353
Cache-Control: no-cache
354
X-Cache-Webcdn: BYPASS from jd-sxhz-dx-w-01
355
356
```
357
358
</details>
359
360
160
361
## 使用短信验证码登录_web端
161
362
162
363
> https://passport.bilibili.com/x/passport-login/web/login/sms