主页 > 软件教程 > 解析高考志愿信息网站爬虫分析

解析高考志愿信息网站爬虫分析

对于某高考志愿信息网站写了一个爬虫, 遇到了一些问题, 在这里记录一下, 顺便学到了一些反爬虫的技巧.

获取每个学校的分数线情况, 首先在浏览器查看所有请求, 找到获取数据的请求, 但是可以发现他这个请求回来的某些数据应该是经过加密的.

这个解密代码一定在客户端, 因此我们找找, 看看能不能找到解密的代码. 首先我们添加请求断点, 看看能有什么突破.

接下来触发请求, 我们来看一下Call Stack中的信息, 经过排查, 我们可以发现如下重要的函数:

通过查找源码, 我们找到上面的那个函数的源码, 这里代码没经过压缩和混淆, 因此可读性是真的好, 太良心了. 我们可以发现其中的两个关键的函数showNumbercnDeCrypt, 猜测应该是这两个函数完成的对于参数的解密

直接在这些函数下断点, 来看看具体的调用, 我们可以发现showNumber的代码非常简单, 这里就不解释了.

接下来是cnDeCrypt, 这个函数看起来比较复杂, 实际上, 可以直接复制代码到控制台, 这个是可以直接执行的, 简单分析一下可以知道他调用了split()forEach两个函数

在这里, 简单翻译一下这段代码吧, 到这里, 这个函数的作用就十分明显了.

var _cnDeCrypt = function (zlVjhiyMm1) {
    var YB2 = "";
    zlVjhiyMm1.split("|").forEach(function ($lvd3) {
        if ($lvd3.search(/【(.*?)】/) !== -1) {
            YB2 += $lvd3.replace('【', '').replace('】', '');
        } else {
            $lvd3 = $lvd3.replace(/[g-t]/ig, "");
            YB2 += "&#x" + $lvd3 + ";"        }
    });
    return YB2
}

最后我们可以发现, 最终返回的是html编码, 但是这个和数据好像并不一样, 我们审查元素来看看, 发现其内容是看不懂的内容, 这里感觉应该是采用了字体加密

我们通过请求搜索一下字体文件, 我们可以发现如下的可疑文件, 利用FontEditor, 来查看一下.

首先打开数字来看看, 字符串和数字差不多, 在这里就不截图展示了.

说点什么吧
  • 全部评论(0
    还没有评论,快来抢沙发吧!