漁滒 发表于 2020-2-3 01:39

python下载文泉学堂求助

本帖最后由 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解码可以得到
{"alg":"HS256","typ":"JWT"}
其中所有都是定值

二、payload
将payloadbase64解码可以得到
{"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中获得
jwtSecret = "g0NnWdSE8qEjdMD8a1aq12qEYphwErKctvfd3IktWHWiOBpVsgkecur38aBRPn2w"

然后使用相同的方法构造其他页码的地址,却无法访问?
请问是哪一部出现了问题,如何才能获取所有页码的地址,感谢

kajweb 发表于 2020-2-3 02:21

2号的时候,那边修改过了
https://github.com/kajweb/wqxuetang_downloader

kajweb 发表于 2020-2-3 02:47

1、时间戳不能超太久
2、增加任意refer
3、页面一次有效

xxscwsrym 发表于 2020-2-3 08:12

谢谢分享

litengdada 发表于 2020-2-3 08:17

kajweb 发表于 2020-2-3 02:47
1、时间戳不能超太久
2、增加任意refer
3、页面一次有效

这是个头疼的问题

litengdada 发表于 2020-2-3 10:08

kajweb 发表于 2020-2-3 02:47
1、时间戳不能超太久
2、增加任意refer
3、页面一次有效

感谢大佬。成了

aniu 发表于 2020-2-3 10:30

litengdada 发表于 2020-2-3 10:08
感谢大佬。成了

大佬,来个配置好的文件

我乃小明 发表于 2020-2-3 10:38

kajweb 发表于 2020-2-3 02:47
1、时间戳不能超太久
2、增加任意refer
3、页面一次有效

D:\wqxuetang_downloader-master>python main.py 6596
Traceback (most recent call last):
File "main.py", line 5, in <module>
    from wqxtDownloader import *;
File "D:\wqxuetang_downloader-master\wqxtDownloader.py", line 5, in <module>
    from wqxtPDF import *
File "D:\wqxuetang_downloader-master\wqxtPDF.py", line 8, in <module>
    import fitz # pip3 install pymupdf
ModuleNotFoundError: No module named 'fitz'

大佬这是为什么?求指导{:301_972:}

litengdada 发表于 2020-2-3 11:03

我乃小明 发表于 2020-2-3 10:38
D:\wqxuetang_downloader-master>python main.py 6596
Traceback (most recent call last):
File "ma ...

安装这个库 pip3 install pymupdf

litengdada 发表于 2020-2-3 11:04

aniu 发表于 2020-2-3 10:30
大佬,来个配置好的文件

他这个已经配置好了,就是自己安装几个库,还有那个配置文件的路径
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: python下载文泉学堂求助