爬虫逆向实战(十六)--某建筑市场平台

一、数据接口分析

主页地址:某建筑市场平台

1、抓包

通过抓包可以发现数据接口是list
爬虫逆向实战(十六)--某建筑市场平台_第1张图片

2、判断是否有加密参数

  1. 请求参数是否加密?
  2. 请求头是否加密?
  3. 响应是否加密?
    通过查看“响应”模块可以发现,返回的响应是加密数据
    爬虫逆向实战(十六)--某建筑市场平台_第2张图片
  4. cookie是否加密?

二、加密位置定位

1、看启动器

查看启动器发现里面包含异步,所以无法正确找到加密位置
爬虫逆向实战(十六)--某建筑市场平台_第3张图片

2、hook

因为响应加密数据一般都是json数据加密,所以解密后会使用JSON.parse进行解密,所以我们可以对JSON.parse进行hook。
hook代码段:

var my_parse = JSON.parse;
JSON.parse = function (params) {
    debugger
    console.log("json_parse params:",params);
    return my_parse(params);
};

运行hook代码,再次点击翻页,发现有明文参数传入
爬虫逆向实战(十六)--某建筑市场平台_第4张图片
往下执行,可以发现是在响应拦截器中使用h方法对数据进行的解密
爬虫逆向实战(十六)--某建筑市场平台_第5张图片

三、扣js代码

从定位到的解密位置进入h方法,可以发现该网站使用的是标准AES解密,并且keyiv均在此方法上方 爬虫逆向实战(十六)--某建筑市场平台_第6张图片
所以我们可以直接使用标准AES模块对密文进行解密
源代码:

var CryptoJS = require('crypto-js')

function h(t) {
    f = CryptoJS.enc.Utf8.parse("jo8j9wGw%6HbxfFn")
    m = CryptoJS.enc.Utf8.parse("0123456789ABCDEF");
    var e = CryptoJS.enc.Hex.parse(t)
        , n = CryptoJS.enc.Base64.stringify(e)
        , a = CryptoJS.AES.decrypt(n, f, {
        iv: m,
        mode: CryptoJS.mode.CBC,
        padding: CryptoJS.pad.Pkcs7
    })
        , r = a.toString(CryptoJS.enc.Utf8);
    return r.toString()
}

你可能感兴趣的:(爬虫逆向实战,爬虫)