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

XFEstudio/bilibili-API-collect

添加密码登录 并修改短信登录与人机验证

695cdd1
SocialSisterYi <45892418+SocialSisterYi@users.noreply.github.com>
提交于

代码差异

6 个文件 +412 -81
Modified README.md +2 -2
@@ -31,13 +31,13 @@
31 31
32 32 计划整理分类&目录:(√代表已完成,x代表正在施工...)
33 33
34 - [API认证与鉴权](other/API_auth.md)(APP与Cookie方式)×
34 - [API认证与鉴权(APP与Cookie方式)](other/API_auth.md)×
35 35 - [图片格式化](other/picture.md)√
36 36 - [登录](login)
37 37 - [二维码登录](login/QR.md)√
38 38 - [验证码登录](login/verify)√
39 39 + [短信登录](login/verify/SMS.md)√
40 + 密码登录
40 + [密码登录](login/verify/password.md)√
41 41 - qq&微博登录
42 42 - [登录基本信息](login/login_info.md)√
43 43 - [个人中心](login/member_center.md)×
Modified comment/comment_list.md +3 -3
@@ -2324,7 +2324,7 @@
2324 2324
2325 2325
2326 2326
2327 ## 获取评论区明细2(带有楼层号 客户端)
2327 ## 获取评论区明细2(带有楼层号 APP端)
2328 2328
2329 2329 > http://api.bilibili.com/x/v2/reply/main
2330 2330
@@ -5412,7 +5412,7 @@ http://api.bilibili.com/x/v2/reply/reply?type=1&oid=2&root=476670&pn=1&ps=5
5412 5412
5413 5413
5414 5414
5415 ## 获取指定评论条目及二级回复明细2(嵌套结构 带有楼层号 客户端)
5415 ## 获取指定评论条目及二级回复明细2(嵌套结构 带有楼层号 APP端)
5416 5416
5417 5417 > http://api.bilibili.com/x/v2/reply/detail
5418 5418
@@ -7005,7 +7005,7 @@ data`对象:
7005 7005
7006 7006
7007 7007
7008 ## 获取评论区评论总数(客户端)
7008 ## 获取评论区评论总数(APP端)
7009 7009
7010 7010 > http://api.bilibili.com/x/v2/reply/count
7011 7011
Modified login/QR.md +11 -9
@@ -66,7 +66,7 @@ http://passport.bilibili.com/qrcode/getLoginUrl
66 66
67 67 密钥超时为180秒
68 68
69 验证正确时会进行设置以下cookie项:
69 验证登录成功后会进行设置以下cookie项:
70 70
71 71 `sid` `DedeUserID` `DedeUserID__ckMd5` `SESSDATA` `bili_jct`
72 72
@@ -90,9 +90,9 @@ http://passport.bilibili.com/qrcode/getLoginUrl
90 90 | data | 正确时:obj<br />错误时:num | 正确时:游戏分站url<br />错误时:错误代码 | 错误时:<br />-1:秘钥错误<br />-2:秘钥超时<br />-4:未扫描<br />-5:未确认 |
91 91
92 92 data 对象:
93 | 字段 | 类型 | 内容 | 备注 |
94 | ---- | ---- | --------------- | ---- |
95 | url | str | 游戏分站登录url | |
93 | 字段 | 类型 | 内容 | 备注 |
94 | ---- | ---- | ------------------- | ---- |
95 | url | str | 游戏分站跨域登录url | |
96 96
97 97 **示例:**
98 98
@@ -131,9 +131,9 @@ curl -d "oauthKey=xxx" "http://passport.bilibili.com/qrcode/getLoginInfo"
131 131 }
132 132 ```
133 133
134 回复头部抓包信息:
134 **响应头部抓包信息:**
135 135
136 可明显看见设置了几个cookie(本人手打已测试成功登录B站)
136 可明显看见设置了几个cookie(填入浏览器即可成功登录)
137 137
138 138 ```http
139 139 HTTP/1.1 200 OK
@@ -152,19 +152,21 @@ Cache-Control: no-cache
152 152 X-Cache-Webcdn: BYPASS from ks-sxhz-dx-w-01
153 153 ```
154 154
155 **游戏分站登录url与cookie的数据对应(也可用于不方便设置cookie的场合提取使用)**
155 **游戏分站跨域登录url:**
156
157 游戏分站跨域登录url与cookie的值一一对应,可用于不方便设置cookie的场合提取使用
156 158
157 159 https://passport.biligame.com/crossDomain?
158 160
159 161 DedeUserID=(登录UID)&
160 162
161 DedeUserID__ckMd5=(DedeUserID__ckMd5)&
163 DedeUserID__ckMd5=(登录UID MD5值)&
162 164
163 165 Expires=(过期时间 秒)&
164 166
165 167 SESSDATA=(登录token)&
166 168
167 bili_jct=(登录csrf)&
169 bili_jct=(csrf)&
168 170
169 171 gourl=(跳转网址 默认为主页)
170 172
Modified login/verify/SMS.md +156 -52
@@ -1,29 +1,113 @@
1 1 # 短信登录
2 2
3 流程&逻辑:
3 web端短信登录流程:
4 4
5 1. [完成人机验证码](readme.md)
6 2. 发送短信
7 3. 提交短信验证码
5 1. [完成人机验证](readme.md)
6 2. 发送短信,使用国际地区代码`cid`+手机号码`tel`+登录密钥`key`+极验`challenge`+验证结果`validate`+验证结果`seccode`
7 3. 提交短信验证码以验证登录操作,使用国际地区代码`cid`+手机号码`tel`+短信验证码`smsCode`
8 8
9 ## 获取国际地区代码(web端)
9 10
10 ## 发送短信
11 > http://passport.bilibili.com/web/generic/country/list
11 12
12 > https://passport.bilibili.com/web/sms/general/v2/send
13 *方式:GET*
14
15 **json回复:**
16
17 根对象:
18
19 | 字段 | 类型 | 内容 | 备注 |
20 | ---- | ---- | -------- | ------- |
21 | code | num | 返回值 | 0:成功 |
22 | data | obj | 数据本体 | |
23
24 `data`对象:
25
26 | 字段 | 类型 | 内容 | 备注 |
27 | ------ | ----- | -------------- | ---- |
28 | common | array | 常用国家或地区 | |
29 | others | array | 其他国家或地区 | |
30
31 `data`中的`common`和`others`数组:
32
33 | 项 | 类型 | 内容 | 备注 |
34 | ---- | ---- | --------------- | ---- |
35 | 0 | obj | 国家或地区1 | |
36 | n | obj | 国家或地区(n+1) | |
37 | …… | obj | …… | …… |
38
39 `common`和`others`数组中的对象:
40
41 | 字段 | 类型 | 内容 | 备注 |
42 | ---------- | ---- | -------------- | ---- |
43 | id | num | 国际代码值 | |
44 | cname | str | 国家或地区名 | |
45 | country_id | str | 国家或地区区号 | |
46
47 **示例:**
48
49 ```shell
50 curl 'http://passport.bilibili.com/web/generic/country/list'
51 ```
52
53 ```json
54 {
55 "code": 0,
56 "data": {
57 "common": [
58 {
59 "id": 1,
60 "cname": "中国大陆",
61 "country_id": "86"
62 },
63 {
64 "id": 5,
65 "cname": "中国香港特别行政区",
66 "country_id": "852"
67 },
68 …………
69 ],
70 "others": [
71 {
72 "id": 22,
73 "cname": "阿富汗",
74 "country_id": "93"
75 },
76 {
77 "id": 20,
78 "cname": "阿尔巴尼亚",
79 "country_id": "355"
80 },
81 …………
82 ]
83 }
84 }
85 ```
86
87
88
89 ## 发送短信验证码(web端)
90
91 > http://passport.bilibili.com/web/sms/general/v2/send
13 92
14 93 *方式:POST*
15 94
16 **正文参数( application/x-www-form-urlencoded ):**
95 短信发送CD时间为60s
17 96
18 | 参数名 | 内容 | 备注 |
19 | --- | --- | --- |
20 | tel | 手机号码 | |
21 | cid | 1 | 固定 |
22 | key | 最开始返回来的 | |
23 | challenge | 最开始返回来的 | |
24 | validate | 验证后返回的 | |
25 | seccode | 验证后返回的 | "\|"号要转义成"%7C" |
97 短信验证码超时时间为5min
98
99 **正文参数( application/x-www-form-urlencoded ):**
26 100
101 | 参数名 | 类型 | 内容 | 必要性 | 备注 |
102 | --- | --- | --- | --- | --- |
103 | tel | num | 手机号码 | 必要 | |
104 | cid | num | 国际地区代码 | 必要 | |
105 | type | num | 21 | 必要 | 必须为`21` |
106 | captchaType | num | 6 | 必要 | 必须为`6` |
107 | key | str | 登录秘钥 | 必要 | 从B站API获取 |
108 | challenge | str | 极验challenge | 必要 | 从B站API获取 |
109 | validate | str | 极验结果 | 必要 | 从极验获取 |
110 | seccode | str | 极验结果+`|jordan` | 必要 | 从极验获取 |
27 111
28 112 **json回复:**
29 113
@@ -31,20 +115,23 @@
31 115
32 116 | 字段 | 类型 | 内容 | 备注 |
33 117 | ------ | ---- | -------- | --------- |
34 | code | num | 返回值 | 0:成功 |
35 | message | str | "验证码短信已下发" | |
118 | code | num | 返回值 | 0:成功<br />-400:请求错误<br />1002:手机号格式错误<br />1015:短信发送次数已达上限<br />1003:验证码已经发送<br />2400:登录秘钥错误<br />2406:验证极验服务出错 |
119 | message | str | 错误信息 | 成功为"验证码短信已下发" |
36 120
37 121 **示例:**
38 122
123 例如手机号为`13888888888`,国际ID为`1(中国大陆)`,登录秘钥为`aabbccdd`,极验challenge为`2333`,极验结果为`666666`,进行发送短信验证码操作
124
39 125 ```shell
40 curl 'https://passport.bilibili.com/web/sms/general/v2/send' \
41 -d \
42 'tel=13888888888&'\
43 'cid=1&type=21&captchaType=6&'\
44 'key=76fb59fbd83a4d9d816162c5156fc964&'\
45 'challenge=2903a8eb967a1d990444cb23ea42f417&'\
46 'validate=f467c345a4e58646234565b6959ca45b&'\
47 'seccode=f467c345a4e58646234565b6959ca45b%7Cjordan'
126 curl --request POST 'http://passport.bilibili.com/web/sms/general/v2/send' \
127 --data-urlencode 'tel=13888888888'\
128 --data-urlencode 'cid=1'\
129 --data-urlencode 'type=21'\
130 --data-urlencode 'captchaType=6'\
131 --data-urlencode 'key=aabbccdd'\
132 --data-urlencode 'challenge=2333'\
133 --data-urlencode 'validate=666666'\
134 --data-urlencode 'seccode=666666|jordan'
48 135 ```
49 136 ```json
50 137 {
@@ -53,52 +140,52 @@ curl 'https://passport.bilibili.com/web/sms/general/v2/send' \
53 140 }
54 141 ```
55 142
143 ## 验证短信登录操作(web端)
56 144
57 ## 短信验证
58
59 > https://passport.bilibili.com/web/sms/general/v2/send
145 > http://passport.bilibili.com/web/login/rapid
60 146
61 147 *方式:POST*
62 148
149 验证登录成功后会进行设置以下cookie项:
150
151 `DedeUserID` `DedeUserID__ckMd5` `SESSDATA` `bili_jct`
152
63 153 **正文参数( application/x-www-form-urlencoded ):**
64 154
65 | 参数名 | 内容 | 备注 |
66 | --- | --- | --- |
67 | cid | 1 | 应该是固定的 |
68 | tel | 手机号码 | |
69 | smsCode | 短信验证码 | |
70 | source | main-web | 应该是固定的 |
71 | goUrl | https://space.bilibili.com | 未测试是否必需 |
72 | keep | true | 未知, 当它是固定吧 |
155 | 参数名 | 类型 | 内容 | 必要性 | 备注 |
156 | --- | --- | --- | --- | --- |
157 | cid | num | 国际地区代码 | 必要 | |
158 | tel | num | 手机号码 | 必要 | |
159 | smsCode | num | 短信验证码 | 必要 | 超时时间为5min |
160 | goUrl | str | 跳转url | 非必要 | 默认为https://www.bilibili.com |
73 161
74 162 **json回复:**
75 163
76 根对象:
164 根对象:
77 165
78 166 | 字段 | 类型 | 内容 | 备注 |
79 167 | --- | --- | --- | --- |
80 | code | num | 0 | 0是成功 |
81 | data | obj | | |
168 | code | num | 返回值 | 0:成功<br />-400:请求错误<br />1006:请输入正确的短信验证码<br />1007:短信验证码已过期 |
169 | message | str | 错误信息 | |
170 | data | obj | 信息本体 | |
82 171
83 `data`对象:
172 `data`对象:
84 173
85 174 | 字段 | 类型 | 内容 | 备注 |
86 175 | --- | --- | --- | --- |
87 176 | is_new | bool | false | 未知,估计是未注册时自动注册新用户 |
88 177 | status | num | 0 | 未知,可能0就是成功吧 |
89 | url | str | https://space.bilibili.com | 应该是请求时候参数里的那个 |
90
91 **http响应头**
92
93 和二维码登录一样,会返回`DedeUserID`、`DedeUserID__ckMd5`、`SESSDATA`、`bili_jct` 4个Cookie用于操作之后的接口
178 | url | str | 跳转url | 默认为https://www.bilibili.com |
94 179
95 180 **示例:**
96 181
182 使用手机号`13888888888`,短信验证码为`123456`,进行验证登录操作
183
97 184 ```shell
98 curl 'https://passport.bilibili.com/web/login/rapid'
99 -d 'cid=1&'\
100 'tel=13888888888&'\
101 'smsCode=123456'\
185 curl --request POST 'https://passport.bilibili.com/web/login/rapid'
186 --data-urlencode 'cid=1'\
187 --data-urlencode 'tel=13888888888'\
188 --data-urlencode 'smsCode=123456'\
102 189 '&source=main-web&goUrl=https%3A%2F%2Fspace.bilibili.com&keep=true'
103 190 ```
104 191 ```json
@@ -111,6 +198,23 @@ curl 'https://passport.bilibili.com/web/login/rapid'
111 198 }
112 199 }
113 200 ```
114 ```plaintext
115 响应头: Set-Cookie...
116 ```
201 **响应头部抓包信息:**
202
203 可明显看见设置了几个cookie(填入浏览器即可成功登录)
204
205 ```http
206 HTTP/1.1 200 OK
207 Date: Mon, 13 Jul 2020 09:57:33 GMT
208 Content-Type: application/json;charset=UTF-8
209 Content-Length: 78
210 Connection: keep-alive
211 Server: Apache-Coyote/1.1
212 Set-Cookie: DedeUserID=***; Domain=.bilibili.com; Expires=Sat, 18-Jul-2020 09:57:57 GMT; Path=/
213 Set-Cookie: DedeUserID__ckMd5=***; Domain=.bilibili.com; Expires=Sat, 18-Jul-2020 09:57:57 GMT; Path=/
214 Set-Cookie: SESSDATA=***; Domain=.bilibili.com; Expires=Sat, 18-Jul-2020 09:57:57 GMT; Path=/; HttpOnly
215 Set-Cookie: bili_jct=***; Domain=.bilibili.com; Expires=Sat, 18-Jul-2020 09:57:57 GMT; Path=/
216 Expires: Mon, 13 Jul 2020 09:57:32 GMT
217 Cache-Control: no-cache
218 X-Cache-Webcdn: BYPASS from jd-sxhz-dx-w-01
219
220 ```
Added login/verify/password.md +224 -0
@@ -0,0 +1,224 @@
1 # 账号密码登录
2
3 web端密码登录流程:
4
5 1. [完成人机验证](readme.md)
6 2. 加密登录密码,获取RSA公钥`key`与盐值`hash`**(盐值有效时间为20s)**,并连接盐值+密码字串(注意先后顺序),使用RSA公钥加密,得到base64格式密文
7 4. 登录操作验证,使用账号`username`**(手机号或邮箱)**+密文密码`password`+登录密钥`key`+极验`challenge`+验证结果`validate`+验证结果`seccode`
8
9 ## 获取加密公钥及密码盐值1(web端)
10
11 > http://passport.bilibili.com/login?act=getkey
12
13 *方式:GET*
14
15 **json回复:**
16
17 根对象:
18
19 | 字段 | 类型 | 内容 | 备注 |
20 | ---- | ---- | ------------ | ---------------- |
21 | hash | str | 密码校验盐值 | 有效时间为20s |
22 | key | str | RSA公钥 | **公钥为固定值** |
23
24 **示例:**
25
26 ```shell
27 curl 'http://passport.bilibili.com/login?act=getkey'
28 ```
29
30 ```json
31 {
32 "hash":"07c6501690c1af85",
33 "key":"-----BEGIN PUBLIC KEY-----\nMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDjb4V7EidX/ym28t2ybo0U6t0n\n6p4ej8VjqKHg100va6jkNbNTrLQqMCQCAYtXMXXp2Fwkk6WR+12N9zknLjf+C9sx\n/+l48mjUU8RqahiFD1XT/u2e0m2EN029OhCgkHx3Fc/KlFSIbak93EH/XlYis0w+\nXl69GV6klzgxW6d2xQIDAQAB\n-----END PUBLIC KEY-----\n"
34 }
35 ```
36
37 ## 获取加密公钥及密码盐值2(APP端)
38
39 > http://passport.bilibili.com/api/oauth2/getKey
40
41 *方式:POST*
42
43 **正文参数( application/x-www-form-urlencoded ):**
44
45 | 参数名 | 类型 | 内容 | 必要性 | 备注 |
46 | ------ | ---- | ------- | ----------- | ---- |
47 | appkey | str | APP密钥 | APP方式必要 | |
48 | sign | str | APP签名 | APP方式必要 | |
49
50 **json回复:**
51
52 根对象:
53
54 | 字段 | 类型 | 内容 | 备注 |
55 | ---- | ---- | ------------ | ---------------- |
56 | hash | str | 验证hash盐值 | 有效时间为20s |
57 | key | str | RSA公钥 | **公钥为固定值** |
58
59 **示例:**
60
61 ```shell
62 curl --request POST 'http://passport.bilibili.com/api/oauth2/getKey'\
63 --data-urlencode 'appkey=1d8b6e7d45233436'\
64 --data-urlencode 'sign=17004c193f688f0b5665c1068e733aff'
65 ```
66
67 ```json
68 {
69 "hash":"07c6501690c1af85",
70 "key":"-----BEGIN PUBLIC KEY-----\nMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDjb4V7EidX/ym28t2ybo0U6t0n\n6p4ej8VjqKHg100va6jkNbNTrLQqMCQCAYtXMXXp2Fwkk6WR+12N9zknLjf+C9sx\n/+l48mjUU8RqahiFD1XT/u2e0m2EN029OhCgkHx3Fc/KlFSIbak93EH/XlYis0w+\nXl69GV6klzgxW6d2xQIDAQAB\n-----END PUBLIC KEY-----\n"
71 }
72 ```
73
74 ## 登录密码的加密
75
76 **注:RSA公钥一般为固定值**
77
78 ```plaintext
79 -----BEGIN PUBLIC KEY-----
80 MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDjb4V7EidX/ym28t2ybo0U6t0n
81 6p4ej8VjqKHg100va6jkNbNTrLQqMCQCAYtXMXXp2Fwkk6WR+12N9zknLjf+C9sx
82 /+l48mjUU8RqahiFD1XT/u2e0m2EN029OhCgkHx3Fc/KlFSIbak93EH/XlYis0w+
83 Xl69GV6klzgxW6d2xQIDAQAB
84 -----END PUBLIC KEY-----
85 ```
86
87 例如登录密码为:
88
89 ```plaintext
90 BiShi22332323
91 ```
92
93 获取到的盐值为:
94
95 ```plaintext
96 8e0db05c46f4052c
97 ```
98
99 那么按照`盐值`+`密码字串`连接二者得到:
100
101 ```plaintext
102 8e0db05c46f4052cBiShi22332323
103 ```
104
105 用公钥进行RSA加密得到base64字串:
106
107 因为公钥的**无法解密性**和盐值的**超时机制**,故无法本地验证加密结果
108
109 ```plaintext
110 YgpjxAQ22pKa9socHIKPCZX0a/NS6Ng9Zzy+rp16b0LJGT6RHw2ERs3+ijCpG96PKTY1Baavwf0xgotmNvpl25l1KO5y4AjcqeWTzNTSVn6ejonBXGmBMybHHYawJ0aMPn1eDGpKrbI91mrF+h2x+fsnnpuZ1gheiYGzFmtshUc=
111 ```
112
113 ## 验证密码登录操作(web端)
114
115 > http://passport.bilibili.com/web/login/v2
116
117 *方式:POST*
118
119 验证登录成功后会进行设置以下cookie项:
120
121 `sid` `DedeUserID` `DedeUserID__ckMd5` `SESSDATA` `bili_jct`
122
123 **正文参数( application/x-www-form-urlencoded ):**
124
125 | 参数名 | 类型 | 内容 | 必要性 | 备注 |
126 | ----------- | ---- | ------------------ | ------ | ---------------- |
127 | captchaType | num | 6 | 必要 | 必须为`6` |
128 | username | str | 用户登录账号 | 必要 | 手机号或邮箱地址 |
129 | password | str | 加密后的带盐密码 | 必要 | base64格式 |
130 | keep | bool | true | 必要 | 必须为`true` |
131 | key | str | 登录秘钥 | 必要 | 从B站API获取 |
132 | challenge | str | 极验challenge | 必要 | 从B站API获取 |
133 | validate | str | 极验结果 | 必要 | 从极验获取 |
134 | seccode | str | 极验结果+`|jordan` | 必要 | 从极验获取 |
135
136 **json回复:**
137
138 根对象:
139
140 | 字段 | 类型 | 内容 | 备注 |
141 | ------- | ---- | ---------- | ------------------------------------------------------------ |
142 | code | num | 返回值 | 0:成功<br />-400:请求错误<br />-629:账号或密码错误<br />-653:用户名或密码不能为空<br />-662:提交超时,请重新提交<br />-2001:缺少必要的的参数<br />2400:登录秘钥错误<br />2406:验证极验服务出错 |
143 | ts | num | 当前时间戳 | 成功时无此项 |
144 | message | str | 错误信息 | 默认为0 |
145 | data | obj | 数据本体 | 成功时有此项 |
146
147 `data`对象:
148
149 **未登录时:**
150
151 | 字段 | 类型 | 内容 | 备注 |
152 | ----------- | ---- | ------------------- | ---- |
153 | redirectUrl | str | 游戏分站跨域登录url | |
154
155 **已登录时:**
156
157 | 字段 | 类型 | 内容 | 备注 |
158 | ------- | ---- | ------------------------ | ---- |
159 | isLogin | bool | true | |
160 | goUrl | str | https://www.bilibili.com | |
161
162 **示例:**
163
164 例如用户账号为`12345678900`,加密后的密码为`xxx`,登录秘钥为`aabbccdd`,极验challenge为`2333`,极验结果为`666666`,进行验证登录操作
165
166 ```shell
167 curl --request POST 'https://passport.bilibili.com/web/login/v2'\
168 --data-urlencode 'captchaType=6'\
169 --data-urlencode 'username=12345678900'\
170 --data-urlencode 'password=xxx'\
171 --data-urlencode 'keep=true'\
172 --data-urlencode 'key=aabbccdd'\
173 --data-urlencode 'challenge=2333'\
174 --data-urlencode 'validate=666666'\
175 --data-urlencode 'seccode=666666|jordan'
176 ```
177
178 ```json
179 {
180 "code": 0,
181 "data": {
182 "redirectUrl": "https://passport.biligame.com/crossDomain?DedeUserID=***&DedeUserID__ckMd5=***&Expires=15551000&SESSDATA=***&bili_jct=***&gourl=https%3A%2F%2Fwww.bilibili.com"
183 }
184 }
185 ```
186
187 **响应头部抓包信息:**
188
189 可明显看见设置了几个cookie(填入浏览器即可成功登录)
190
191 ```http
192 HTTP/1.1 200 OK
193 Date: Mon, 13 Jul 2020 06:56:00 GMT
194 Content-Type: application/json;charset=UTF-8
195 Content-Length: 273
196 Connection: keep-alive
197 Server: Apache-Coyote/1.1
198 Set-Cookie: DedeUserID=***; Domain=.bilibili.com; Expires=Sat, 09-Jan-2021 06:39:43 GMT; Path=/
199 Set-Cookie: DedeUserID__ckMd5=***; Domain=.bilibili.com; Expires=Sat, 09-Jan-2021 06:39:43 GMT; Path=/
200 Set-Cookie: SESSDATA=***; Domain=.bilibili.com; Expires=Sat, 09-Jan-2021 06:39:43 GMT; Path=/; HttpOnly
201 Set-Cookie: bili_jct=***; Domain=.bilibili.com; Expires=Sat, 09-Jan-2021 06:39:43 GMT; Path=/
202 Content-Security-Policy-Report-Only: default-src 'self' data: *.bilibili.com *.hdslb.com; style-src 'self' 'unsafe-inline' *.hdslb.com static.geetest.com; img-src 'self' data: blob: *.bilibili.com *.hdslb.com http://*.hdslb.com static.geetest.com; script-src 'self' 'unsafe-inline' 'unsafe-eval' *.bilibili.com *.hdslb.com api.geetest.com static.geetest.com; object-src 'self' *.hdslb.com; media-src 'self' *.acgvideo.com http://*.acgvideo.com *.ksyungslb.com; connect-src 'self' data: wss://*.bilibili.com:* *.bilibili.com *.hdslb.com *.biliapi.net *.biliapi.com; frame-ancestors 'self' *.bilibili.com *.biligame.com; report-uri https://security.bilibili.com/csp_report
203 Expires: Mon, 13 Jul 2020 06:55:59 GMT
204 Cache-Control: no-cache
205 X-Cache-Webcdn: BYPASS from jd-sxhz-dx-w-01
206 ```
207
208 **游戏分站跨域登录url:**
209
210 游戏分站跨域登录url与cookie的值一一对应,可用于不方便设置cookie的场合提取使用
211
212 https://passport.biligame.com/crossDomain?
213
214 DedeUserID=(登录UID)&
215
216 DedeUserID__ckMd5=(登录UID MD5值)&
217
218 Expires=(过期时间 秒)&
219
220 SESSDATA=(登录token)&
221
222 bili_jct=(csrf)&
223
224 gourl=(跳转网址 默认为主页)
Modified login/verify/readme.md +16 -15
@@ -1,15 +1,17 @@
1 1 # 验证码登录
2 2
3 流程&逻辑:
3 人机验证方式登录包含**账号密码登录**与手**机短信验证码登录**
4 4
5 1. 请求验证码参数
6 2. 进行验证
7 3. 返回验证结果,进行短信或密码登录
5 人机验证流程:
6
7 1. 请求验证码参数,得到登录密钥`key`与极验ID`gt`和极验KEY`challenge`
8 2. 进行滑动or点击验证
9 3. 返回验证结果`validate`与`seccode`,进行短信或密码登录
8 10
9 11
10 12 ## 申请验证码参数
11 13
12 > https://passport.bilibili.com/web/captcha/combine?plat=6
14 > http://passport.bilibili.com/web/captcha/combine?plat=6
13 15
14 16 *方式:GET*
15 17
@@ -26,18 +28,17 @@
26 28
27 29 | 字段 | 类型 | 内容 | 备注 |
28 30 | -------- | ----- | ------ | -------- |
29 | result | obj | 套了个娃 | 东西都在这 |
30 | type | num | 1 | 未知 |
31 | result | obj | 套了个娃 | |
32 | type | num | 1 | **作用尚不明确** |
31 33
32 34 `result`对象:
33 35
34 36 | 字段 | 类型 | 内容 | 备注 |
35 37 | -------- | ----- | ------ | -------- |
36 | success | num | 1 | 1应该就是成功了 |
37 | gt | str | 一串Hex | 好像是固定的 |
38 | challenge | str | 一串Hex | 验证码的id |
39 | key | str | 一串Hex | 验证码无关,但后边需要 |
40
38 | success | num | 1 | **作用尚不明确** |
39 | gt | str | 极验ID | 一般为固定值 |
40 | challenge | str | 极验KEY | 由B站后端产生用于人机验证 |
41 | key | str | 登录秘钥 | 与人机验证无关,与登录接口有关,但与极验KEY对应 |
41 42
42 43 **示例:**
43 44
@@ -62,12 +63,12 @@ curl 'https://passport.bilibili.com/web/captcha/combine?plat=6'
62 63
63 64 ## 进行验证
64 65
65 本文档为Bilibili文档,验证码为geetest极验提供,故不提供api.
66 本文档为Bilibili文档,验证码为geetest极验提供,故不提供api
66 67
67 68 附: [手动验证器](https://kuresaru.github.io/geetest-validator/)
68 69 [及其源码](https://github.com/kuresaru/geetest-validator)
69 70
70 1. 打开手动验证器,在1/2填入上边api返回的`gt`和`challenge`
71 1. 打开手动验证器,在1、2分别填入上面API返回的`gt`和`challenge`
71 72 2. 点击按钮3,稍等加载验证码,点击按钮4进行验证
72 73 3. 验证完成后,点击按钮5生成验证结果
73 74 4. 使用最开始获得到的`key`、`challenge`和刚获得到的`validate`、`seccode`继续之后的登录操作
@@ -76,4 +77,4 @@ curl 'https://passport.bilibili.com/web/captcha/combine?plat=6'
76 77 ## 继续登录
77 78
78 79 - [短信登录](SMS.md)
79 - 密码登录
80 - [密码登录](password.md)