博客园 首页 私信博主 显示目录 隐藏目录 管理 动画

一步步抓取真气网的数据

一步步抓取真气网的数据

分析阶段

生成请求参数

  • 打开网页,打开调试窗口看到网络,找到请求的接口,如下图
    postpicture
  • 我们可以看到请求的API,方式是post,参数名为param 内容加密了。
https://www.zq12369.com/api/newzhenqiapi.php
  • 确定加密函数方式生成加密参数,我在资源文件中搜索param 找到如下的代码块,内心小小激动一下。
    由此确定加密函数为getParam
    param
  • 然后全局搜索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  

jquery

  • 解压缩js eval代码块找到密钥和方法参数。
    在文件中全局搜索getParam,发现被压缩和混淆了js代码。如此我们要做对应的解压缩才能得到真正的js代码,参考链接在最后。
    // 解压缩前
    pre
    // 解压缩后,下面就是解压出来的代码
    last

  • 至此我们就可以调用getParam来生成请求参数了 我们也可以确定他们用的是crypto-js,这个加密库,我们只要找到密钥和方式就可以了。

发送post请求

  • 不同的语言有不同的实现,我代码是用java写的,用的第三方的jar包

处理请求结果

  • 我们从图上可以看到,请求结果也是加密的,我们要解密后才能得到真实的数据
    result

  • 通过控制台的打印数据来看这是最后一步了。心中越发的激动了。
    realresult

  • 这是我用java 实现的后的结果。至此就获取到了真正的数据。
    myresult

这个网站不同的接口参数加密是有区别的,有的是方法二次加密生成密钥。并要上传密钥的。
解压缩网站 http://dean.edwards.name/packer/
也可以自己手动解压缩,我这里就是手动的 参考 https://zhuanlan.zhihu.com/p/32344678

posted @ 2019-07-18 17:07  ants_double  阅读(1156)  评论(0编辑  收藏  举报