XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet
公开
关注 0 Fork 0 Star 0
返回提交历史

XFEstudio/bilibili-API-collect

添加app短信登录接口 (#685)

* Update SMS.md * Update SMS.md

8e2a4a9
Ding <michael19950415@outlook.com>
提交于

代码差异

1 个文件 +201 -0
Modified docs/login/login_action/SMS.md +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