短信登录
web端短信登录流程:
- 完成人机验证
- 发送短信,使用国际地区代码
cid
+手机号码tel
+登录密钥key
+极验challenge
+验证结果validate
+验证结果seccode
- 提交短信验证码以验证登录操作,使用国际地区代码
cid
+手机号码tel
+短信验证码smsCode
获取国际地区代码(web端)
http://passport.bilibili.com/web/generic/country/list
请求方式:GET
json回复:
根对象:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
code | num | 返回值 | 0:成功 |
data | obj | 数据本体 |
data
对象:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
common | array | 常用国家或地区 | |
others | array | 其他国家或地区 |
data
中的common
和others
数组:
项 | 类型 | 内容 | 备注 |
---|---|---|---|
0 | obj | 国家或地区1 | |
n | obj | 国家或地区(n+1) | |
…… | obj | …… | …… |
common
和others
数组中的对象:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
id | num | 国际代码值 | |
cname | str | 国家或地区名 | |
country_id | str | 国家或地区区号 |
示例:
curl 'http://passport.bilibili.com/web/generic/country/list'
查看响应示例:
{
"code": 0,
"data": {
"common": [
{
"id": 1,
"cname": "中国大陆",
"country_id": "86"
},
{
"id": 5,
"cname": "中国香港特别行政区",
"country_id": "852"
},
…………
],
"others": [
{
"id": 22,
"cname": "阿富汗",
"country_id": "93"
},
{
"id": 20,
"cname": "阿尔巴尼亚",
"country_id": "355"
},
…………
]
}
}
http://passport.bilibili.com/x/passport-login/web/sms/send
请求方式:POST
短信发送CD时间为60s
短信验证码超时时间为5min
正文参数( application/x-www-form-urlencoded ):
参数名 | 类型 | 内容 | 必要性 | 备注 |
---|---|---|---|---|
tel | num | 手机号码 | 必要 | |
cid | num | 国际地区代码 | 必要 | |
token | str | 在获取gt,challenge处url有 | 必要 | |
challenge | str | 极验challenge | 必要 | 从B站API获取 |
validate | str | 极验结果 | 必要 | 从极验获取 |
seccode | str | 极验结果+|jordan | 必要 | 从极验获取 |
json回复:
根对象:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
code | num | 返回值 | 0:成功 -400:请求错误 1002:手机号格式错误 86203:短信发送次数已达上限 1003:验证码已经发送 1025:该手机号在哔哩哔哩有过永久封禁记录,无法再次注册或绑定新账号 2400:登录秘钥错误 2406:验证极验服务出错 |
message | str | 错误信息 | 成功为0 |
data | obj | 数据 | 内含captcha_key |
captcha_key在下方传参时需要,请备用. 示例:
例如手机号为13888888888
,国际id为1(中国大陆)
,登录秘钥为aabbccdd
,极验challenge为2333
,极验结果为666666
,进行发送短信验证码操作
curl 'http://passport.bilibili.com/web/sms/general/v2/send' \
--data-urlencode 'tel=13888888888' \
--data-urlencode 'cid=1' \
--data-urlencode 'type=21' \
--data-urlencode 'captchaType=6' \
--data-urlencode 'key=aabbccdd' \
--data-urlencode 'challenge=2333' \
--data-urlencode 'validate=666666' \
--data-urlencode 'seccode=666666|jordan'
查看响应示例:
{"code":0,
"message":"0",
"ttl":1,
"data":{"captcha_key":"7542f109c3318d74847626495c68c321"}
}
使用短信验证码登录(web端)
http://passport.bilibili.com/x/passport-login/web/login/sms
请求方式:POST
验证登录成功后会进行设置以下cookie项:
DedeUserID
DedeUserID__ckMd5
SESSDATA
bili_jct
正文参数( application/x-www-form-urlencoded ):
参数名 | 类型 | 内容 | 必要性 | 备注 |
---|---|---|---|---|
cid | num | 国际地区代码 | 必要 | |
tel | num | 手机号码 | 必要 | |
code | num | 短信验证码 | 必要 | 超时时间为5min |
captcha_key | str | 上方发送短信验证码时的一个参数 | 必要 | |
goUrl | str | 跳转url | 非必要 | 默认为https://www.bilibili.com |
keep | str | 未知 | 非必要 | 默认为true |
json回复:
根对象:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
code | num | 返回值 | 0:成功 -400:请求错误 1006:请输入正确的短信验证码 1007:短信验证码已过期 |
message | str | 错误信息 | |
data | obj | 信息本体 |
data
对象:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
is_new | bool | false | 未知,估计是未注册时自动注册新用户 |
status | num | 0 | 未知,可能0就是成功吧 |
url | str | 跳转url | 默认为https://www.bilibili.com |
示例:
使用手机号13888888888
,短信验证码为123456
,进行验证登录操作
curl 'https://passport.bilibili.com/web/login/rapid'
--data-urlencode 'cid=1' \
--data-urlencode 'tel=13888888888' \
--data-urlencode 'smsCode=123456'
查看响应示例:
{
"code": 0,
"data": {
"is_new": false,
"status": 0,
"url": "https://space.bilibili.com"
}
}
响应头部抓包信息:
可明显看见设置了几个cookie(填入浏览器即可成功登录)
查看响应示例:
HTTP/1.1 200 OK
Date: Mon, 13 Jul 2020 09:57:33 GMT
Content-Type: application/json;charset=UTF-8
Content-Length: 78
Connection: keep-alive
Server: Apache-Coyote/1.1
Set-Cookie: DedeUserID=***; Domain=.bilibili.com; Expires=Sat, 18-Jul-2020 09:57:57 GMT; Path=/
Set-Cookie: DedeUserID__ckMd5=***; Domain=.bilibili.com; Expires=Sat, 18-Jul-2020 09:57:57 GMT; Path=/
Set-Cookie: SESSDATA=***; Domain=.bilibili.com; Expires=Sat, 18-Jul-2020 09:57:57 GMT; Path=/; HttpOnly
Set-Cookie: bili_jct=***; Domain=.bilibili.com; Expires=Sat, 18-Jul-2020 09:57:57 GMT; Path=/
Expires: Mon, 13 Jul 2020 09:57:32 GMT
Cache-Control: no-cache
X-Cache-Webcdn: BYPASS from jd-sxhz-dx-w-01