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

这篇具有很好参考价值的文章主要介绍了爬虫逆向实战(二十三)--某准网数据。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、数据接口分析

主页地址:某准网

1、抓包

通过抓包可以发现数据接口是api_to/search/company_v2.json
爬虫逆向实战(二十三)--某准网数据,爬虫逆向实战,爬虫

2、判断是否有加密参数

  1. 请求参数是否加密?
    通过查看“载荷”模块可以发现b参数和kiv参数是加密参数
    爬虫逆向实战(二十三)--某准网数据,爬虫逆向实战,爬虫
  2. 请求头是否加密?
  3. 响应是否加密?
    通过查看“响应”模块可以发现,网站返回的响应数据也是加密的
    爬虫逆向实战(二十三)--某准网数据,爬虫逆向实战,爬虫
  4. cookie是否加密?

二、加密位置定位

1、加密参数b和kiv

(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源码:文章来源地址https://www.toymoban.com/news/detail-680234.html

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
}

到了这里,关于爬虫逆向实战(二十三)--某准网数据的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • (二十三)大数据实战——Flume数据采集之采集数据聚合案例实战

    本节内容我们主要介绍一下Flume数据采集过程中,如何把多个数据采集点的数据聚合到一个地方供分析使用。我们使用hadoop101服务器采集nc数据,hadoop102采集文件数据,将hadoop101和hadoop102服务器采集的数据聚合到hadoop103服务器输出到控制台。其整体架构如下: ①在hadoop101服务

    2024年02月09日
    浏览(49)
  • 逆向爬虫进阶实战:突破反爬虫机制,实现数据抓取

    随着网络技术的发展,网站为了保护自己的数据和资源,纷纷采用了各种反爬虫机制。然而,逆向爬虫技术的出现,使得我们可以突破这些限制,实现对目标网站的深入分析和抓取。本文将介绍逆向爬虫进阶实战的一些技巧和代码片段,帮助读者更好地理解和掌握这一技术。

    2024年02月04日
    浏览(49)
  • 二十三、SQL 数据分析实战(10个简单的SQL题目)

    现有一张参加比赛的队伍名称表 easy_competition_list,easy_competition_list 表的数据如下所示: 【题目1】每个参赛队伍都会和其他参赛队伍开展一次组队比赛,要求输出两两参赛队伍的所有比赛情况组合(两者分别为队伍A和队伍B),并按照队名依次升序排列。输出内容包括:队伍

    2024年02月11日
    浏览(55)
  • Elasticsearch实战(二十三)---ES数据建模与Mysql对比 一对多模型

    我们如何把Mysql的模型合理的在ES中去实现? 就需要你对要存储的数据足够的了解,及对应用场景足够的深入分析,才能建立一个合适的模型,便于你后期扩展 一对一 模型 一对多 模型 多对多 模型 1.一对多 模型 我们现在有两个模型, 一个商品Product, 一个分类Category , 我们对比下一

    2024年02月08日
    浏览(56)
  • Python爬虫(二十三)_selenium案例:动态模拟页面点击

    本篇主要介绍使用selenium模拟点击下一页,更多内容请参考:Python学习指南 分享一份Python的学习资料,但由于篇幅有限,完整文档可以扫码免费领取!!! 1)Python所有方向的学习路线(新版) 总结的Python爬虫和数据分析等各个方向应该学习的技术栈。 比如说爬虫这一块,很

    2024年02月04日
    浏览(56)
  • SpringBoot实战(二十三)集成 SkyWalking

    官方网址: https://skywalking.apache.org/ 官方文档: SkyWalking 极简入门 | Apache SkyWalking SkyWalking 是一个 开源的分布式跟踪系统 ,可以用于监控和诊断分布式系统的性能问题。它可以跟踪应用程序中的请求流,并收集与请求相关的信息,如服务调用、数据库操作、消息队列等。Sky

    2024年02月15日
    浏览(37)
  • 爬虫逆向实战(十九)--某号站登录

    主页地址:某号站 1、抓包 通过抓包可以发现登录接口 2、判断是否有加密参数 请求参数是否加密? 通过查看“载荷”模块可以发现有一个 jsondata_rsa 的加密参数 请求头是否加密? 无 响应是否加密? 无 cookie是否加密? 无 1、看启动器 查看启动器发现里面有一个 LoginNow 的调

    2024年02月11日
    浏览(42)
  • 微软Bing Chat逆向爬虫实战

    最近AIGC太火了,以OpenAI为首的一批人工智能公司一次又一次的引爆科技圈的浪潮,从ChatGPT到Sora,OpenAI在一年多时间里连续发布两个重磅产品,彻底拉开了AI时代的帷幕。而作为科技巨头微软也是OpenAi的大股东,OpenAi只要出了新模型,那么微软的Bing都是第一时间集成上去,基

    2024年04月09日
    浏览(49)
  • WebSocket爬虫与JS逆向实战

    声明:本文章中所有内容仅供学习交流,不可用于任何商业用途和非法用途,否则后果自负,如有侵权,请联系作者立即删除!由于本人水平有限,如有理解或者描述不准确的地方,还望各位大佬指教!! 练习网站: Q3JhenkgUHJvTW9ua2V5IGh0dHBzOi8vd3d3LnBhbnpob3UuZ292LmNuL3p3Z2tfMTU4NjEve

    2024年02月07日
    浏览(47)
  • 【第二十三篇】Burpsuite+SQL注入实现登录绕过等(靶场实战案例)

    存在一个业务场景如下 筛选商品时,后端查询语句如下: 只有商品名匹配且该商品已发布(released=1),客户端才能回显数据。 点击Lifestyle时,页面回显 生活方式 有关商品,并可知参数以GET方

    2024年04月10日
    浏览(62)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包