本文主要介绍交流一下裁判文书网的爬去规则,我主要是由于公司要求而去分析这个网站的,一看是看该网站服务器各类卡,蛋疼。用python的selenium模块去写太麻烦了,作不到大量爬取,无可奈何本身不断研究,终于攻破了该网站的js代码参数python
思路主要经过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文件里找到了这段代码:cookie
vl5x的值是是用getKey()函数算出来的,而getKey里面传入得参数是你每次登录网站,自动给你分配得动态cookies而产生得。函数
这样咱们就能够获得vl5x动态参数。接下来就是比较麻烦得guid参数了,guid实际上是一个动态的随机生成参数,附上python代码:post
而后拿这个guid参数取请求该网站的getcode网址,拿到number参数。学习
这样咱们三个参数同时拿到,一次性向服务器发送请求,获取数据网站
这样咱们就能够直接获取大量的司法文书数据了,展现一下效果ui
你们能够有问题能够和我交流学习,这个技术分享出来,但愿能够帮到更多的人。