#首次写博客
中国裁判文书网
2019-09-25
这次又更新了一个版本,换汤不换药~~pass
2019-06-30依旧可用。
从2018年8月7日网站更新后,网上代码全军覆没不可用,着手研究了下。
2018年9月22日/23日开放docid解析api。
更新2018年8月20日
这两天文书网又动手脚了,更新了7道反爬措施。佩服这工程师啊,改动这么频繁~
- 主要用到的就是unzip,com.str.Decrypt,结合起来运行js;缺什么函数就补什么函数,主要的还是Decrypt中的_key需要获取来解密。
更新于2018年9月8日/9月14日
又双叒叕更新了,又是周五,成心不让休息啊,大哥。
不过,这次属于新瓶装旧酒,恢复了一些功能。
其它跟8月7日差不多。
分析
思路主要通过python去破解网站js的加密数据。该网站请求数据都是通过post请求的,分析一下header,会发现,它是一个post请求,请求的表单数据包括param、index、page、order、direction、vl5x、number、guid这几个参数。很显然,param是查询字符串,index是页码,page是一页展示的数据量,order是排序方式,其中,vl5x、number、guid是js代码加密生成得可变参数。一次性向对方服务器发送请求后获取相应得数据得。
- vl5x是对大多数人来说是最难获取的。
涉及到js代码的混淆,相比之前的复杂的多。
浏览器分析得到如下代码
看到这些代码,爬虫新手一下就懵逼了~~~orz
这就是js代码的混淆,谷歌一下js反混淆,就能得到正常的js代码,python运用PyExecJs调用getKey函数就能得到vl5x。
with open(r'D:\source\wenshu_spider\getKey.js') as fp:
js = fp.read()
ect=execjs.compile(js)
vl5x=ect.call('getKey','a3e88e89affa632c001fc18bb990d3c02eaf9c7d')
print(vl5x)
第一大难题至此解决。
-
guid参数,guid是一个随机生成的参数,也是调用js即可;这个之前的代码也可以用;
-
number参数,post参数guid到GetCode即可。
程序运行过程中提取的数据(2018年9月8日)。
##TODO
想写的太多了,慢慢来(大坑)
……
已爬取8800万条裁判文书数据,有需要数据的伙伴可以(。・∀・)ノ゙嗨前台QQ7900-44912。
提取到EXCEL,主要字段如下: