2021.04-中国裁判文书网爬虫

2023.02.13 更新

文书网又恢复了之前的加密方式,此文现在又有效了,我不会再更新具体内容,避免文书网服务器因爬虫而承受巨大压力,有智慧的朋友请自行参悟。

2021.12.20 更新

文书网反爬已更新,此文失效。


随着反爬的不断升级,文书网的爬虫也越来越难了。

为了降低反爬再次升级的可能性,本文仅展示部分思路和代码,如果想要数据,可以联系我 xxxxxx。


一、数据的样貌

以获取北京互联网法院的数据为例(下同):

clvfv8

有用的数据是后两个rest.q4w的json数据,体积较大的那个是文书数据,较小的那个是左边栏的分类。

文书数据的json内容:

WX20210406-134057@2x

没错,数据是加密的,需要将密文解密为明文才是我们需要的数据。

但事情远没有这么简单,我们再看一下这个响应的请求体:

WX20210406-134424@2x

请求体的一些数据都是加密的。

二、寻找解决办法

我们可以确定第一步要做的事就是找一找请求体中比较特别的参数来自哪里。

1 pageId

pageId在当前页面的 url 里:

https://wenshu.court.gov.cn/website/wenshu/181217BMTKHNT2W0/index.html?pageId=0cc75a376282f1729e60324a0ea5c379&s40=132&fymc=%E5%8C%97%E4%BA%AC%E4%BA%92%E8%81%94%E7%BD%91%E6%B3%95%E9%99%A2

那 url 里的pageId又是从哪里来?

index.js文件里有一行代码

WX20210406-135351@2x

我们按图索骥,看一看$.WebSite.uuid()方法的代码

WX20210406-135647@2x

这就是源头了,将这个函数的代码转成你正在用的语言对应的代码即可,比如 python 代码

image-20210406135916712

2 s40

没什么可找的,就是一个分类标识 / id 。

3 sortFields

也没什么可说的,排序标识。

4 ciphertext

很明显的二进制,转为字符串后:

7OCOHRGqXNozUql6NpzY6qpt202104069M0AJ6beqt9EniWl05VPNw==

很明显的base64编码,解码试一下:

image-20210406140533598

可以看见,解码后的内容不是正常字符,无需多想,肯定是加密了,我们再找一找:

image-20210406141050149

找到了,ciphertext是则cipher()函数生成的,再找一找这个函数是如何实现的:

image-20210406141251240

又找到源头了,其中还有一个方法WebSite.random也需要看一下,但比较简单,就不上图了。

上面的代码可以直接调用,或者转码,比如转码为 python 代码

image-20210406141452016

5 cfg

也是固定的值,没什么好说的。

6 __RequestVerificationToken

image-20210406142012125

用到的也是random方法,和ciphertext中的random方法相同。

三、最后结果

结果能获取到了,但文书网为了反爬虫,特意做了条数限制,只显示前60条,若想获取更多数据,还需要精确搜索条件以缩小查询结果条目数量到60或60以内。

image-20210406142318427

版权声明:
作者:ht
链接:https://www.techfm.club/p/41889.html
来源:TechFM
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>