美文网首页Python
2021.04-中国裁判文书网爬虫

2021.04-中国裁判文书网爬虫

作者: thepoy | 来源:发表于2021-04-16 19:06 被阅读0次

    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

    相关文章

      网友评论

        本文标题:2021.04-中国裁判文书网爬虫

        本文链接:https://www.haomeiwen.com/subject/zazelltx.html