一步步抓取真气网的数据
一步步抓取真气网的数据
分析阶段
生成请求参数
- 打开网页,打开调试窗口看到网络,找到请求的接口,如下图
- 我们可以看到请求的API,方式是post,参数名为param 内容加密了。
https://www.zq12369.com/api/newzhenqiapi.php
- 确定加密函数方式生成加密参数,我在资源文件中搜索param 找到如下的代码块,内心小小激动一下。
由此确定加密函数为getParam
- 然后全局搜索getParam,刚开始怎么找也没有找到这个函数,后来点了一下jquery-1.9.1.min.js?v=0.1.js文件,找到了。这个方法竟然放在jquery中,看到版本这么老,心想别是jquery自带的方法,然后下了对应的jquery1.9的代码,发现没有。由此找到加密函数所在位置
// 假的jquery
https://www.zq12369.com/resource/js/jquery-1.9.1.min.js?v=0.1
// 真的
https://ajax.aspnetcdn.com/ajax/jquery/jquery-1.9.1.min.js
-
解压缩js eval代码块找到密钥和方法参数。
在文件中全局搜索getParam,发现被压缩和混淆了js代码。如此我们要做对应的解压缩才能得到真正的js代码,参考链接在最后。
// 解压缩前
// 解压缩后,下面就是解压出来的代码
-
至此我们就可以调用getParam来生成请求参数了 我们也可以确定他们用的是crypto-js,这个加密库,我们只要找到密钥和方式就可以了。
发送post请求
- 不同的语言有不同的实现,我代码是用java写的,用的第三方的jar包
处理请求结果
-
我们从图上可以看到,请求结果也是加密的,我们要解密后才能得到真实的数据
-
通过控制台的打印数据来看这是最后一步了。心中越发的激动了。
-
这是我用java 实现的后的结果。至此就获取到了真正的数据。
这个网站不同的接口参数加密是有区别的,有的是方法二次加密生成密钥。并要上传密钥的。
解压缩网站 http://dean.edwards.name/packer/
也可以自己手动解压缩,我这里就是手动的 参考 https://zhuanlan.zhihu.com/p/32344678
作者:Ants_double
出处:https://www.cnblogs.com/ants_double/
本文版权归作者和博客园所有,欢迎转载。转载请在留言板处留言给我,且在文章标明原文链接,谢谢!
如果您觉得本篇博文对您有所收获,觉得我还算用心,请点击右下角的 [大拇指],谢谢!