本帖最后由 aiai 于 2020-2-3 01:42 编辑
对于其中的一本书的首页:https://lib-nuanxin.wqxuetang.com/read/pdf/3208991
首先抓包得知,第一页的URL为https://lib-nuanxin.wqxuetang.com/page/img/3208991/1?k=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJwIjoxLCJ0IjoxNTgwNjYzNDE1MDAwLCJiIjoiMzIwODk5MSIsInciOjEwMDAsImsiOiJ7XCJ1XCI6XCIzRHBmYjlGSmRsTT1cIixcImlcIjpcIkQ2ZWhxcjFzbTM5cDdDWk1XNEwzVVE9PVwiLFwidFwiOlwiN1pWa2xrZFE0V3diVDZqRTlGZlAwUT09XCIsXCJiXCI6XCJ5VzhOK0h5anR1TT1cIixcIm5cIjpcIkZRYXk3QzZjWklNPVwifSIsImlhdCI6MTU4MDY2MzQxNX0.HYdcK-npYjL6RH555IE-9PFh3nS_o_hFMb9yREgxFxw
3208991 | bid | 首页可以获取 | 1 | page | 页码 | eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJwIjoxLCJ0IjoxNTgw
NjYzNDE1MDAwLCJiIjoiMzIwODk5MSIsInciOjEwMDAsImsiOiJ7
XCJ1XCI6XCIzRHBmYjlGSmRsTT1cIixcImlcIjpcIkQ2ZWhxcjFzbT
M5cDdDWk1XNEwzVVE9PVwiLFwidFwiOlwiN1pWa2xrZFE0V3d
iVDZqRTlGZlAwUT09XCIsXCJiXCI6XCJ5VzhOK0h5anR1TT1cIixcIm
5cIjpcIkZRYXk3QzZjWklNPVwifSIsImlhdCI6MTU4MDY2MzQxNX
0.HYdcK-npYjL6RH555IE-9PFh3nS_o_hFMb9yREgxFxw | k | 加密参数 |
主要分析的是其中的加密参数
加密参数使用的是JSON Web Tokens (JWT),参考文献:https://www.jianshu.com/p/d1644e281250
以小数点为准可以分为三部分
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9 | header | base64编码,无加密 | eyJwIjoxLCJ0IjoxNTgwNjYzNDE1MDAwLCJiIjoiMzIwODk5MSIsInc
iOjEwMDAsImsiOiJ7XCJ1XCI6XCIzRHBmYjlGSmRsTT1cIixcImlcIjpcIkQ2
ZWhxcjFzbTM5cDdDWk1XNEwzVVE9PVwiLFwidFwiOlwiN1pWa2xrZF
E0V3diVDZqRTlGZlAwUT09XCIsXCJiXCI6XCJ5VzhOK0h5anR1TT1cIixcI
m5cIjpcIkZRYXk3QzZjWklNPVwifSIsImlhdCI6MTU4MDY2MzQxNX0 | payload | base64编码,无加密 | HYdcK-npYjL6RH555IE-9PFh3nS_o_hFMb9yREgxFxw | sign | 加密 |
一、header
将headerbase64解码可以得到
[JavaScript] 纯文本查看 复制代码 {"alg":"HS256","typ":"JWT"}
其中所有都是定值
二、payload
将payloadbase64解码可以得到
[JavaScript] 纯文本查看 复制代码 {"p":1,"t":1580663415000,"b":"3208991","w":1000,"k":"{\"u\":\"3Dpfb9FJdlM=\",\"i\":\"D6ehqr1sm39p7CZMW4L3UQ==\",\"t\":\"7ZVklkdQ4WwbT6jE9FfP0Q==\",\"b\":\"yW8N+HyjtuM=\",\"n\":\"FQay7C6cZIM=\"}","iat":1580663415}
往上查看抓包结果可以知道
p | 页码 | 数值 | t | 由Date.parse(new Date())获得 | 数值 | b | 由首页网址获得 | 字符串 | w | 定值 | 数值 | k | 由访问https://lib-nuanxin.wqxuetang.com/v1/read/k?bid=3208991获得 | 字符串 | iat | 由t去掉后面三个0获得 | 数值 |
三、sign
根基JWT参考文献可知,sign由上面两个参数加上Secret(密钥)通过HMACSHA256算法获得
其中的密钥可以在https://lib-nuanxin.wqxuetang.com/static/read/js/read.v5.3.1.722eb.js中获得
[Python] 纯文本查看 复制代码 jwtSecret = "g0NnWdSE8qEjdMD8a1aq12qEYphwErKctvfd3IktWHWiOBpVsgkecur38aBRPn2w"
然后使用相同的方法构造其他页码的地址,却无法访问?
请问是哪一部出现了问题,如何才能获取所有页码的地址,感谢 |