diff --git a/README.md b/README.md index e18d41b..0751194 100644 --- a/README.md +++ b/README.md @@ -35,7 +35,9 @@ - [图片格式化](other/picture.md)√ - [登录](login) - [二维码登录](login/QR.md)√ - - 密码&短信登录 + - [验证码登录](login/verify)√ + + [短信登录](login/verify/SMS.md)√ + + 密码登录 - qq&微博登录 - [登录基本信息](login/login_info.md)√ - [个人中心](login/member_center.md)× diff --git a/login/verify/SMS.md b/login/verify/SMS.md new file mode 100644 index 0000000..7e17b5c --- /dev/null +++ b/login/verify/SMS.md @@ -0,0 +1,116 @@ +# 短信登录 + +流程&逻辑: + +1. [完成人机验证码](readme.md) +2. 发送短信 +3. 提交短信验证码 + + +## 发送短信 + +> https://passport.bilibili.com/web/sms/general/v2/send + +*方式:POST* + +**正文参数( application/x-www-form-urlencoded ):** + +| 参数名 | 内容 | 备注 | +| --- | --- | --- | +| tel | 手机号码 | | +| cid | 1 | 固定 | +| key | 最开始返回来的 | | +| challenge | 最开始返回来的 | | +| validate | 验证后返回的 | | +| seccode | 验证后返回的 | "\|"号要转义成"%7C" | + + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------ | ---- | -------- | --------- | +| code | num | 返回值 | 0:成功 | +| message | str | "验证码短信已下发" | | + +**示例:** + +```shell +curl 'https://passport.bilibili.com/web/sms/general/v2/send' \ +-d \ +'tel=13888888888&'\ +'cid=1&type=21&captchaType=6&'\ +'key=76fb59fbd83a4d9d816162c5156fc964&'\ +'challenge=2903a8eb967a1d990444cb23ea42f417&'\ +'validate=f467c345a4e58646234565b6959ca45b&'\ +'seccode=f467c345a4e58646234565b6959ca45b%7Cjordan' +``` +```json +{ + "code": 0, + "message": "验证码短信已下发" +} +``` + + +## 短信验证 + +> https://passport.bilibili.com/web/sms/general/v2/send + +*方式:POST* + +**正文参数( application/x-www-form-urlencoded ):** + +| 参数名 | 内容 | 备注 | +| --- | --- | --- | +| cid | 1 | 应该是固定的 | +| tel | 手机号码 | | +| smsCode | 短信验证码 | | +| source | main-web | 应该是固定的 | +| goUrl | https://space.bilibili.com | 未测试是否必需 | +| keep | true | 未知, 当它是固定吧 | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| --- | --- | --- | --- | +| code | num | 0 | 0是成功 | +| data | obj | | | + +`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| --- | --- | --- | --- | +| is_new | bool | false | 未知,估计是未注册时自动注册新用户 | +| status | num | 0 | 未知,可能0就是成功吧 | +| url | str | https://space.bilibili.com | 应该是请求时候参数里的那个 | + +**http响应头** + +和二维码登录一样,会返回`DedeUserID`、`DedeUserID__ckMd5`、`SESSDATA`、`bili_jct` 4个Cookie用于操作之后的接口 + +**示例:** + +```shell +curl 'https://passport.bilibili.com/web/login/rapid' +-d 'cid=1&'\ +'tel=13888888888&'\ +'smsCode=123456'\ +'&source=main-web&goUrl=https%3A%2F%2Fspace.bilibili.com&keep=true' +``` +```json +{ + "code": 0, + "data": { + "is_new": false, + "status": 0, + "url": "https://space.bilibili.com" + } +} +``` +```plaintext +响应头: Set-Cookie... +``` diff --git a/login/verify/readme.md b/login/verify/readme.md new file mode 100644 index 0000000..a9aa1ff --- /dev/null +++ b/login/verify/readme.md @@ -0,0 +1,79 @@ +# 验证码登录 + +流程&逻辑: + +1. 请求验证码参数 +2. 进行验证 +3. 返回验证结果,进行短信或密码登录 + + +## 申请验证码参数 + +> https://passport.bilibili.com/web/captcha/combine?plat=6 + +*方式:GET* + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------ | ---- | -------- | --------- | +| code | num | 返回值 | 0:成功 | +| data | obj | 信息本体 | | + +`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| -------- | ----- | ------ | -------- | +| result | obj | 套了个娃 | 东西都在这 | +| type | num | 1 | 未知 | + +`result`对象: + +| 字段 | 类型 | 内容 | 备注 | +| -------- | ----- | ------ | -------- | +| success | num | 1 | 1应该就是成功了 | +| gt | str | 一串Hex | 好像是固定的 | +| challenge | str | 一串Hex | 验证码的id | +| key | str | 一串Hex | 验证码无关,但后边需要 | + + +**示例:** + +```shell +curl 'https://passport.bilibili.com/web/captcha/combine?plat=6' +``` +```json +{ + "code": 0, + "data": { + "result": { + "success": 1, + "gt": "bd111e81eda1cbb9f54425aafc0908ac", + "challenge": "2903a8eb967a1d990444cb23ea42f417", + "key": "76fb59fbd83a4d9d816162c5156fc964" + }, + "type": 1 + } +} +``` + + +## 进行验证 + +本文档为Bilibili文档,验证码为geetest极验提供,故不提供api. + +附: [手动验证器](https://kuresaru.github.io/geetest-validator/) +[及其源码](https://github.com/kuresaru/geetest-validator) + +1. 打开手动验证器,在1/2填入上边api返回的`gt`和`challenge` +2. 点击按钮3,稍等加载验证码,点击按钮4进行验证 +3. 验证完成后,点击按钮5生成验证结果 +4. 使用最开始获得到的`key`、`challenge`和刚获得到的`validate`、`seccode`继续之后的登录操作 + + +## 继续登录 + +- [短信登录](SMS.md) +- 密码登录