返回提交历史
Modified
docs/misc/sign/wbi.md
+22
-17
XFEstudio/bilibili-API-collect
修改wbi文档中的流程描述 (#718)
0abdd4b
代码差异
1 个文件
+22
-17
@@ -43,7 +43,7 @@
43
43
72136226c6a73669787ee4fd02a74c27
44
44
```
45
45
46
3. 将欲签名的请求参数排序后编码
46
3. 为参数中添加`wts`时间戳
47
47
48
48
若下方内容为欲签名的请求参数(以 js obj 为例)
49
49
@@ -51,14 +51,29 @@
51
51
{
52
52
foo: '114',
53
53
bar: '514',
54
baz: 1919810
54
zab: 1919810
55
55
}
56
56
```
57
57
58
那么按照 Key 排序并进行 url query 编码后的结果应为:
58
`wts`字段的值应为以秒为单位的 Unix TimeStamp,如`1684746387`
59
60
将`wts`参数添加在参数列表中,即:
59
61
62
```javascript
63
{
64
foo: '114',
65
bar: '514',
66
zab: 1919810,
67
wts: 1684746387
68
}
60
69
```
61
bar=514&baz=1919810&foo=114
70
71
4. 将欲签名的请求参数排序后编码
72
73
按照 Key 升序排序并进行 url query 编码后的结果应为:
74
75
```
76
bar=514&foo=114&wts=1684746387&zab=1919810
62
77
```
63
78
64
79
请注意,如果参数值为中文或特殊字符,则进行 url query 编码后的字符串中参数值对应的字母必须是**大写字母** (部分库会编码为小写字母)
@@ -78,34 +93,24 @@
78
93
bar=%E4%BA%94%E4%B8%80%E5%9B%9B&baz=1919810&foo=one%20one%20four
79
94
```
80
95
81
4. 为参数中添加`wts`时间戳
82
83
`wts`字段的值应为以秒为单位的 Unix TimeStamp,如`1684746387`
84
85
将`wts`参数添加在参数列表最后,即:
86
87
```
88
bar=514&baz=1919810&foo=114&wts=1684746387
89
```
90
91
96
5. 计算`w_rid`并添加在其后
92
97
93
98
在上一步得出的 url query 字符串后拼接第 2 步计算得出的`mixin_key`(作为盐)
94
99
95
100
```
96
bar=514&baz=1919810&foo=114&wts=168474638772136226c6a73669787ee4fd02a74c27
101
bar=514&foo=114&wts=1684746387&zab=191981072136226c6a73669787ee4fd02a74c27
97
102
```
98
103
99
104
对这个整体进行 **md5 Hash 运算**(32-bit 字符小写),得到的值便是 Wbi Sign,也就是参数`w_rid`
100
105
101
106
```
102
d3cbd2a2316089117134038bf4caf442
107
90efcab09403023875b8516f07e9f9de
103
108
```
104
109
105
110
最后一步,把这个计算出的值作为参数`w_rid`添加在原始参数列表后,也就完成了一次 Wbi Sign,可以调用 REST API 进行请求了
106
111
107
112
```
108
bar=514&baz=1919810&foo=114&wts=1684746387&w_rid=d3cbd2a2316089117134038bf4caf442
113
bar=514&foo=114&wts=1684746387&zab=1919810&w_rid=90efcab09403023875b8516f07e9f9de
109
114
```
110
115
111
116
## Wbi签名算法实现Demo