Kenny0521 发表于 2022-4-20 12:00

科学文库的另一种下载方法

本帖最后由 Kenny0521 于 2022-4-20 16:55 编辑

论坛有很多人发布了科学文库的破解方法了,在这里先膜拜一下那些大佬们
众所周知,科学文库打印限制100页,而且在代码中,图片被脚本分成了6份,但是我在打印图书的时候,发现打印的页面有时会损坏,一定是获取图片失败的征兆,所以我尝试获取那些图片
https://book.sciencereading.cn/shop/book/Booksimple/show.do?id=B6252986009463779E053020B0A0A2867000
比如这本书,点击打印的时候,打开DevTools:
https://s1.ax1x.com/2022/04/20/Lr37Jx.png
发现网页在调取很多xhr,随便点开一个,右键->在新标签页中打开,这时神奇的事情发生了,我们获取到了完整的图片:
https://wkobwp.sciencereading.cn/asserts/dd29ac5c533b4978b721b121a0ec2ec0/image/0/100
(规律:第一张图片是0,第二张是1...依此类推)
最后使用Python合并图片即可,对于清晰度问题,可发现后面的数字是100,改成1000有奇效哦

guyinqian 发表于 2022-4-21 14:53

sdieedu 发表于 2022-4-21 11:26
预览其实传来原版PDF了,就是没人分享技术下载而已。。。。

@sdieedu 您好,不知道别人是不是类似方法,反正我自己总算是捣鼓出来了原版PDF的下载方法了

以下为分析过程:

经过抓包分析,阅读PDF的时候图片地址类似于https://wkobwp.sciencereading.cn/asserts/cd4bf6f17b42403fb192ef570a5b111d/image/4/tiles/100/400/2/2?accessToken=accessToken这样,经过修改比较,发现各个参数分别代表:

https://wkobwp.sciencereading.cn/asserts/图书编码ID/image/页码/tiles/分辨率/图片尺寸/纵向第n块/横向第n块?accessToken=accessToken

由是观之,其实服务器返回的只是图片罢了~

因此最笨的方法便是获取每一张图片并合并,其中的分辨率共有50,75,100,125,150,200,400,800,1000九个级别

但是显而易见,这肯定不是下载文档的最优解,于是继续分析

继续抓包,就可以和楼主一样发现打印时返回每一页的图片,

结合页面上的分辨率,和不断尝试,抓取如下图片分析得到:

https://wkobwp.sciencereading.cn/asserts/837cbe62aaf64504ae48c992dcc5e7cf/image/2/tiles/50/400/1/1?accessToken=accessToken

https://wkobwp.sciencereading.cn/asserts/837cbe62aaf64504ae48c992dcc5e7cf/image/2/tiles/75/400/1/1?accessToken=accessToken

https://wkobwp.sciencereading.cn/asserts/837cbe62aaf64504ae48c992dcc5e7cf/image/2/tiles/100/400/1/1?accessToken=accessToken

https://wkobwp.sciencereading.cn/asserts/837cbe62aaf64504ae48c992dcc5e7cf/image/2/tiles/125/400/1/1?accessToken=accessToken

https://wkobwp.sciencereading.cn/asserts/837cbe62aaf64504ae48c992dcc5e7cf/image/2/tiles/150/400/2/1?accessToken=accessToken

https://wkobwp.sciencereading.cn/asserts/837cbe62aaf64504ae48c992dcc5e7cf/image/2/tiles/200/400/1/1?accessToken=accessToken

https://wkobwp.sciencereading.cn/asserts/837cbe62aaf64504ae48c992dcc5e7cf/image/2/tiles/400/400/1/1?accessToken=accessToken

https://wkobwp.sciencereading.cn/asserts/837cbe62aaf64504ae48c992dcc5e7cf/image/2/tiles/800/400/3/3?accessToken=accessToken

https://wkobwp.sciencereading.cn/asserts/837cbe62aaf64504ae48c992dcc5e7cf/image/2/tiles/1000/400/4/3?accessToken=accessToken

【整页图片】

https://wkobwp.sciencereading.cn/asserts/cd4bf6f17b42403fb192ef570a5b111d/image/2/1000?accessToken=accessToken

确实可以获取原PDF,但是需要修改别的参数,您可以自己抓包试一下,应该不难发现

至于为什么知道了方法不在论坛公布,我想是因为论坛人流量太大,一旦公之于众,即使设置较高的权限,官方都会很快修复

Zhili.An 发表于 2022-4-20 12:31

不错不错 等另外一个大佬给出全文原本下载方法

z80xiaojin 发表于 2022-4-20 12:08

厉害!学习了

titaz 发表于 2022-4-20 12:51

厉害了。

guyinqian 发表于 2022-4-20 12:55

@Kenny0521 有两个问题
一是只能获取部分图片,比较后面的页码就报错,error
https://wkobwp.sciencereading.cn/asserts/dd29ac5c533b4978b721b121a0ec2ec0/image/21/100
{"error":-1,"status":3}
二是获取到的图片分辨率并不高,比较模糊,而网页预览的PDF是清晰的

Kenny0521 发表于 2022-4-20 13:00

guyinqian 发表于 2022-4-20 12:55
@Kenny0521 有两个问题
一是只能获取部分图片,比较后面的页码就报错,error
https://wkobwp.scienceread ...

一,我刚试了一下,不会报错(但是如果跳着访问就会报错,例如100页,101页,102页不会,但如果101页,207页可能会报错)
二,这个方法确实不是获取原文档的方法,但是在科学文库打印的时候会限制打印100页,这个无限制,可一次性访问所有页面并打印(此方法为更改脚本使其不限制打印的简单实现方法)

think137 发表于 2022-4-20 13:17

太牛了,厉害

zxf3141592654 发表于 2022-4-20 13:37

受教了,感谢感谢

向往的歌 发表于 2022-4-20 13:44

能下载百度文库吗?{:1_904:}

At1629 发表于 2022-4-20 13:44

学习了,谢谢
页: [1] 2 3 4 5 6 7 8 9
查看完整版本: 科学文库的另一种下载方法