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

news2024/12/23 5:55:04

一、数据接口分析

主页地址:某准网

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
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/940183.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

torch.mul()函数使用说明,含高维张量实例及运行结果

torch.mul函数使用说明&#xff0c;含实例及运行结果 torch.mul() 函数torch.mul() 函数定义参数及功能高维数据实例解释 参考博文及感谢 torch.mul() 函数 对输入的张量或数做点积运算&#xff0c;如果维度不统一会想进行维度统一&#xff08;广播机制&#xff09;&#xff0…

PConv : Run, Don’t Walk: Chasing Higher FLOPS for Faster Neural Networks

摘要 为了设计快速的神经网络,**许多研究都集中在减少浮点运算(FLOPs)**的数量。然而,我们观察到这种FLOPs的减少并不一定会导致相同程度的延迟减少。这主要是由于浮点运算每秒效率较低的问题所致。为了实现更快的网络,我们重新审视了流行的操作算子,并证明这种低FLOPS主…

docker高级(DockerFile解析)

1、构建三步骤 编写Dockerfile文件 docker build命令构建镜像 docker run依镜像运行容器实例 2、DockerFile构建过程解析 Dockerfile内容基础知识 1&#xff1a;每条保留字指令都必须为大写字母且后面要跟随至少一个参数 2&#xff1a;指令按照从上到下&#xff0c;顺序执行…

异地访问Oracle数据库的解决方案:利用内网穿透实现PL/SQL远程连接的建议与步骤

文章目录 前言1. 数据库搭建2. 内网穿透2.1 安装cpolar内网穿透2.2 创建隧道映射 3. 公网远程访问4. 配置固定TCP端口地址4.1 保留一个固定的公网TCP端口地址4.2 配置固定公网TCP端口地址4.3 测试使用固定TCP端口地址远程Oracle ​ 小月糖糖主页 在强者的眼中&#xff0c;没有最…

SolidWorks软件安装包分享(附安装教程)

目录 一、软件简介 二、软件下载 一、软件简介 SolidWorks是一款由达索系统&#xff08;Dassault Systmes&#xff09;开发的三维计算机辅助设计&#xff08;CAD&#xff09;软件&#xff0c;被广泛应用于机械、电子、建筑和航空航天等领域。它以易学易用、强大的功能和良好的…

Michael.W基于Foundry精读Openzeppelin第32期——SignatureChecker.sol

Michael.W基于Foundry精读Openzeppelin第32期——SignatureChecker.sol 0. 版本0.1 SignatureChecker.sol 1. 目标合约2. 代码精读2.1 isValidSignatureNow(address signer, bytes32 hash, bytes memory signature) 0. 版本 [openzeppelin]&#xff1a;v4.8.3&#xff0c;[for…

华为OD机试 - 云短信平台优惠活动 - 回溯(Java 2023 B卷 200分)

目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路五、Java算法源码六、效果展示1、输入2、输出3、说明 华为OD机试 2023B卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&#xff08;A卷B卷&#…

教师如何有效地发放开学通知并收集签名回执?

老师在即将开学时&#xff0c;希望能够向家长发送开学通知&#xff0c;并确认家长已经收到通知。接下来教给各位老师如何完成这个需求的步骤&#xff1a; 好消息&#xff01;博主给大家争取到的易查分福利&#xff0c;只需要在注册时输入邀请码&#xff1a;xmt66&#xff0c;就…

从AD迁移至AAD,看体外诊断领军企业如何用网络准入方案提升内网安全基线

摘要&#xff1a; 某医用电子跨国集团中国分支机构在由AD向AzureAD Global迁移时&#xff0c;创新使用宁盾网络准入&#xff0c;串联起上海、北京、无锡等国内多个职场与海外总部,实现平滑、稳定、全程无感知的无密码认证入网体验&#xff0c;并通过合规基线检查&#xff0c;确…

CAD的清除命令如何使用?CAD的清除命令使用方法

CAD广泛应用于土木建筑、装饰装潢、城市规划、园林设计、电子电路、机械设计、服装鞋帽、航空航天、轻工化工等诸多领域&#xff0c;因此CAD越来越成为一项基本技能&#xff0c;很多用人岗位都会要求会使用CAD&#xff0c;为帮助更多人快速学会CAD&#xff0c;而且CAD的使用本身…

taobao.trade.fullinfo.get(获取单笔交易的详细信息)天猫国际站店铺订单接口方法

淘宝交易API taobao.trade.fullinfo.get&#xff08;获取单笔交易的详细信息&#xff09; 获取单笔交易的详细信息 1. 只有单笔订单的情况下Trade数据结构中才包含商品相关的信息 2. 获取到的Order中的payment字段在单笔子订单时包含物流费用&#xff0c;多笔子订单时不包含物…

STM32--SPI通信与W25Q64(2)

STM32–SPI通信与W25Q64&#xff08;1&#xff09; 文章目录 SPI外设特征 SPI框图传输模式主模式全双工连续传输 非连续传输硬件SPI读写W25Q64 SPI外设 STM32内部集成了硬件SPI收发电路&#xff0c;可以由硬件自动执行时钟生成、数据收发等功能&#xff0c;减轻CPU的负担。 特…

leetcode 496. 下一个更大元素 I

2023.8.28 这题提供暴力解法和单调栈法两种方法。 暴力解&#xff1a; class Solution { public:vector<int> nextGreaterElement(vector<int>& nums1, vector<int>& nums2) {vector<int> ans(nums1.size(),-1);for(int i0; i<nums1.size…

『FastGithub』一款.Net开源的稳定可靠Github加速神器,轻松解决GitHub访问难题

&#x1f4e3;读完这篇文章里你能收获到 如何使用FastGithub解决Github无法访问问题了解FastGithub的工作原理 文章目录 一、前言二、项目介绍三、访问加速原理四、FastGithub安装1. 项目下载2. 解压双击运行3. 运行效果4. GitHub访问效果 一、前言 作为开发者&#xff0c;会…

springMVC之拦截器

文章目录 前言一、拦截器的配置二、拦截器的三个抽象方法三、多个拦截器的执行顺序总结 前言 拦截器 一、拦截器的配置 SpringMVC中的拦截器用于拦截控制器方法的执行 SpringMVC中的拦截器需要实现HandlerInterceptor SpringMVC的拦截器必须在SpringMVC的配置文件中进行配置&…

数字化智能工厂信息化系统集成整合规划建设方案[150页word]

导读&#xff1a;原文《150页6万字数字化智能工厂信息化系统集成整合规划建设方案》&#xff08;获取来源见文尾&#xff09;&#xff0c;本文精选其中精华及架构部分&#xff0c;逻辑清晰、内容完整&#xff0c;为快速形成售前方案提供参考。 数字化智能工厂建设方案 设备智…

大数据学习:Hive常用函数

Hive常用函数 1. Hive的参数传递 1.1 Hive命令行 查看hive命令的参数 [hadoopnode03 ~]$ hive -help语法结构: hive [-hiveconf xy]* [<-i filename>]* [<-f filename>|<-e query-string>][-S] 说明&#xff1a; -i 从文件初始化HQL。-e从命令行执行指定…

LVDS 2-port RGB 转 MIPI参数计算

有一些显示器是只给了屏幕的参数&#xff0c;屏幕输入的参数不一定&#xff0c;可能是输出的MIPI 给显示器&#xff0c;显示内部转换后是LVDS RGB&#xff0c;因此需要转换。 屏幕参数 转换为MIPI参数

当我焦虑时,我从CSDN的博主身上学到了什么?

文章目录 前言一、思考为什么会产生差距1.1 懒惰1.2 没有合理的规划学习时间 二、我该如何做&#xff1f;2.1 认真生活规律作息2.2 做事就是0和1 结语 前言 我们在学习的过程当中总会遇到一些比我们自己优秀的人&#xff0c;不论你是在更好的985或211院校学习&#xff0c;还是…

计算系统丢失CONCRT140.dll文件的四种解决方法(亲测可用)

今天&#xff0c;我将为大家分享一个关于计算机技术的问题——计算系统丢失CONCRT140.dll文件的四种解决方法。希望我的分享能够帮助到大家&#xff0c;解决你们在日常生活和工作中遇到的困扰。 CONCRT140.dll是Windows操作系统中的一个动态链接库文件&#xff0c;它包含了一些…