我的编程空间,编程开发者的网络收藏夹
学习永远不晚

爬虫逆向实战(二十三)--某准网数据

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

爬虫逆向实战(二十三)--某准网数据

一、数据接口分析

主页地址:某准网

1、抓包

通过抓包可以发现数据接口是api_to/search/company_v2.json
在这里插入图片描述

2、判断是否有加密参数

  1. 请求参数是否加密?
    通过查看“载荷”模块可以发现b参数和kiv参数是加密参数
    在这里插入图片描述
  2. 请求头是否加密?
  3. 响应是否加密?
    通过查看“响应”模块可以发现,网站返回的响应数据也是加密的
    在这里插入图片描述
  4. cookie是否加密?

二、加密位置定位

1、加密参数bkiv

(1)看启动器

查看启动器发现里面包含异步,所以无法正确找到加密位置
在这里插入图片描述

(2)搜索关键字

通过搜索关键字kiv:可以发现有一处条件判断,根据请求的方法和请求头类型设置bkiv,所以此处大概是加密参数的赋值位置。
在这里插入图片描述
在此处下断点,再次获取数据,发现可以断住,ta是加密参数的值。同时ta的生成就在上方,所以此处就是加密位置。
在这里插入图片描述

2、响应数据

因为响应加密数据一般都是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代码,再次获取数据,发现可以断住明文
在这里插入图片描述
接着调试执行,可以发现e.data是密文数据,经过M.gy方法解密后的t是明文数据。
在这里插入图片描述

三、扣js代码

将加密以及解密的方法扣出,缺啥补啥即可。在扣代码时可以发现,网站使用的AES加密,所以可以直接使用标准模块。同时,kiv是加解密时使用的iv,所以加解密时要使用相同的kiv
JavaScript源码:

var CryptoJS = require('crypto-js')function M_A(e) {    void 0 === e && (e = 16);    for (var t = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".split(""), n = "", r = 0; r < e; r++) {        n += t[Math.ceil(61 * Math.random())]    }    return n}var s, u = (s = null,        function () {            return s || (s = function () {                var e, t, n, r, i = null;                return i || (t = new RegExp("\\u200c", "g"),                    n = new RegExp("\\u200d", "g"),                    r = new RegExp(".{8}", "g"),                    e = "‍‌‍‍‍‌‌‌‍‍‌‍‍‌‍‍‍‍‌‍‍‌‍‍‍‌‍‌‍‍‍‌‍‌‌‍‍‍‍‌‍‌‌‌‍‌‌‌‍‌‌‍‍‍‌‌‍‌‌‍‌‍‌‌‍‌‍‍‍‌‌‌‍‌‌‍‍‌‌‍‍‌‌‍‍‍‍‌‍‌‍‍‌‌‍‍‍‌‍‍‍‍‌‍‍‍‌‌‌‍‍‌‍‍‌‌‍‌‌‌‍‌‌‌‍‍‌‍".replace(r, (function (e) {return String.fromCharCode(parseInt(e.replace(t, 1).replace(n, 0), 2))                        }                    )),                    i = {                        key: CryptoJS.enc.Utf8.parse(e),                        mode: CryptoJS.mode.CBC,                        pad: CryptoJS.pad.Pkcs7                    }),                    i            }()),                s        })l = function (e, t) {    void 0 === e && (e = ""),    void 0 === t && (t = "");    var n = u()        , r = CryptoJS.AES.encrypt(e.toString(), n.key, {        iv: CryptoJS.enc.Utf8.parse(t),        mode: n.mode,        padding: n.pad    });    return r = r.toString()}c = function (e, t) {    void 0 === e && (e = ""),    void 0 === t && (t = "");    var n = u()        , r = CryptoJS.AES.decrypt(e.toString(), n.key, {        iv: CryptoJS.enc.Utf8.parse(t),        mode: n.mode,        padding: n.pad    });    return r = r.toString(CryptoJS.enc.Utf8)}M_mA = function (e, t) {    return e ? ("string" != typeof e && (e = e.toString()),        l(e, t.iv)) : ""}function M_gy(e, t) {    var n = "";    return "string" == typeof e && e.length > 20 && (n = c(e, t.iv)),        n}function get_params() {    var r_data = {        "query": "爬虫",        "pageNum": 5,        "limit": 15    }    var n = JSON.stringify(r_data);    var kiv = M_A()    var t = M_mA(n, {iv: kiv}).replace(/\//g, "_").replace(/\+/g, "-").replace(/=/g, "~");    return {        b: t,        kiv: kiv    }}function decryption_data(e_data, kiv) {    var data = M_gy(e_data, {iv: kiv})    data = JSON.parse(data)    return data}

来源地址:https://blog.csdn.net/qq_44906798/article/details/132500289

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

爬虫逆向实战(二十三)--某准网数据

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

爬虫逆向实战(二十三)--某准网数据

一、数据接口分析 主页地址:某准网 1、抓包 通过抓包可以发现数据接口是api_to/search/company_v2.json 2、判断是否有加密参数 请求参数是否加密? 通过查看“载荷”模块可以发现b参数和kiv参数是加密参数 请求
2023-08-30

爬虫逆向实战(二十五)--某矿采购公告

一、数据接口分析 主页地址:某矿 1、抓包 通过抓包可以发现数据接口是cgxj/by-lx-page 2、判断是否有加密参数 请求参数是否加密? 通过查看“载荷”模块可以发现有一个param的加密参数 请求头是否加密? 无响应是否加密?
2023-08-30

编程热搜

目录