美文网首页Python之路我爱编程
中国裁判文书网全网最新爬虫分析

中国裁判文书网全网最新爬虫分析

作者: 再敲一串代码 | 来源:发表于2018-04-13 20:34 被阅读1798次

本文主要介绍交流一下裁判文书网的爬去规则,我主要是因为公司要求而去分析这个网站的,一看是看该网站服务器各种卡,蛋疼。用python的selenium模块去写太麻烦了,做不到大量爬取,迫不得已自己不断研究,终于攻破了该网站的js代码参数

思路主要通过python去破解网站js的加密数据。该网站请求数据都是通过post请求的,分析一下header,会发现,它是一个post请求,请求的表单数据包括param、index、page、order、direction、vl5x、number、guid这几个参数。很显然,param是查询字符串,index是页码,page是一页展示的数据量,order是排序方式,其中,vl5x、number、guid是js代码加密生成得可变参数。一次性向对方服务器发送请求后获取相应得数据得。

现在最关键得是如何解密这三个参数?我主要用得是python得PyV8模块去调度js代码,列出代码中使用得python模块。

找一个浏览器里已经用过的vl5x去post ListContent,返回的是remind key,因此这个vl5x值是实时计算生成的。 

到底这个值是怎么计算的呢,既然浏览器能算出vl5x的值,那算法应该隐藏在网页的JS文件中。好吧,继续找,在Lawyee.CPWSW.List.js文件里找到了这段代码:

vl5x的值是是用getKey()函数算出来的,而getKey里面传入得参数是你每次登陆网站,自动给你分配得动态cookies而产生得。

这样我们就可以得到vl5x动态参数。接下来就是比较麻烦得guid参数了,guid其实是一个动态的随机生成参数,附上python代码:

然后拿这个guid参数取请求该网站的getcode网址,拿到number参数。

这样我们三个参数同时拿到,一次性向服务器发送请求,获取数据

这样我们就可以直接获取大量的司法文书数据了,展示一下效果

大家可以有问题可以和我交流学习,这个技术分享出来,希望可以帮到更多的人。

相关文章

网友评论

  • 看五年前自己的文章真是唏嘘不已:getkey()可能用python写麻烦点,guid就一行代码的事,这js写的太良心了,不过可能过段时间就要被无脑新手逼得的混淆了
  • a15e215d4ae6:你好,現在文书网的DocID好像被加密了,不知道您有没有解决这个问题
  • 浅夏墨烟:你好,请问在获取cookie,计算vl5x值 的过程是怎么样的,可以详细说一下吗
    请叫我小魔仙:这个问题解决了吗?:dizzy_face:
  • yeah青没素:请问这个getkey()在哪儿定义的?楼主是怎么找到的?不会是后台方法,回调函数吧?
  • 2991351cf13e:你好,getkey的解密能不能介绍详细点呢,js小白
    请叫我小魔仙:哎。不知道这位道友解决了嘛,如果解决了的话麻烦加QQ:1255449177
  • ba63635ca305:你好,现在的裁判文书网,讲这三个参数提交后,会返回404 360wzws 的错误,有什么好方法继续抓取吗,selenium也可以
  • 云中人山:我的getKey方法中,有个de(一直找不到是哪里定义的
  • 鹊辞月:请问您用的python几,我无法在自己的windows上安装PyV8
  • 4ca2fac69750:您好,文中您说getkey函数在您给出的js文件中,我亲自去查了查,并没有发现该函数的定义,该js文件只是给出了vi5x参数值是有getkey计算得到的。
  • 3df7edaa4cac:为什么我只能请求到前100页数据,后面请求出来就为空了
    高级小虾米_7a0a:@高级小虾米_7a0a 他自己写答案了-.-ShowMessage("返回的结果过多,推荐您精确检索条件后再次查询!");
    高级小虾米_7a0a:Lawyee.CPWSW.List.js里有这么一段
    //edit by zhs 151124
    //限制用户的最大翻页次数(100页后不可再次翻页)
    if (index > 25) {
    Lawyee.Tools.ShowMessage("返回的结果过多,推荐您精确检索条件后再次查询!");
    list_center.css("height", "500px");
    list_center.css("font-size", "18px");
    list_center.html("无符合条件的数据...");
    return false;
    }
    var guid1 = createGuid() + createGuid() + "-" + createGuid() + "-" + createGuid() + createGuid() + "-" + createGuid() + createGuid() + createGuid();
    var yzm1;
    $.ajax({
    url: "/ValiCode/GetCode", type: "POST", async: false,
    data: { "guid": guid1 },
    success: function (data) {
    yzm1 = data;
    }
    });
  • 冲啊小笼包:你好,看完以后我这边还是有点问题。。。能不能私聊一下,帮个忙

本文标题:中国裁判文书网全网最新爬虫分析

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