爬虫逆向实战(30)-某查查股东关联公司(HmacSHA512)

2023-10-27

一、数据接口分析

主页地址:某查查

1、抓包

通过抓包可以发现数据接口是api/people/getRelatCompany
在这里插入图片描述

2、判断是否有加密参数

  1. 请求参数是否加密?

  2. 请求头是否加密?
    通过查看“标头”可以发现,请求头中有一个key和value都是密文的请求头和一个X-Pid
    在这里插入图片描述

  3. 响应是否加密?

  4. cookie是否加密?

二、加密位置定位

1、密文请求头

(1)看启动器

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

(2)搜索关键字

因为请求头key也是密文,所以无法搜索key值,但是因为是请求头加密,所以可以搜索关键字headers[。通过搜索可以发现,有一处设置请求头的位置,所以怀疑此处就是加密位置。
在这里插入图片描述
在此处打断点,再次获取数据,发现可以断住,并且此处key值与value值都是密文,所以此处就是加密位置,而且il的生成就在上方。
在这里插入图片描述

2、X-Pid

(1)搜索关键字

通过搜索关键字x-pid可以发现,网站是从window中取出来的。
在这里插入图片描述
所以我们可以通过搜索window.pid=可以发现,是写在静态页面中的,同时还有一个tid是加密请求头中用到的。
在这里插入图片描述

三、扣js代码

将定位到的加密位置的代码扣出,缺啥补啥即可。
在扣js代码时,可以发现o.default中使用的是HmacSHA系列算法,所以我们可以尝试一下,判断是否是标准算法,通过控制台的输出,可以发现,o.default就是标准的HmacSHA算法,所以此处我们可以使用标准模块来加密。
在这里插入图片描述
JavaScript源代码:

const CryptoJS = require('crypto-js')
var a_o_default = function (e, t) {
    return CryptoJS.HmacSHA512(e, t).toString()
};

var a_a_default = function () {
    var codes = {
    "0": "W",
    "1": "l",
    "2": "k",
    "3": "B",
    "4": "Q",
    "5": "g",
    "6": "f",
    "7": "i",
    "8": "i",
    "9": "r",
    "10": "v",
    "11": "6",
    "12": "A",
    "13": "K",
    "14": "N",
    "15": "k",
    "16": "4",
    "17": "L",
    "18": "1",
    "19": "8"
}
    for (var e = (arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "/").toLowerCase(), t = e + e, n = "", i = 0; i < t.length; ++i) {
        var a = t[i].charCodeAt() % 20;
        n += codes[a]
    }
    return n
};


var a_default = function () {
    var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}
        , t = (arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "/").toLowerCase()
        , n = JSON.stringify(e).toLowerCase();
    return a_o_default(t + n, a_a_default(t)).toLowerCase().substr(8, 20)
};

var r_default = function () {
    var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}
        , t = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : ""
        , n = (arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "/").toLowerCase()
        , i = JSON.stringify(e).toLowerCase();
    return a_o_default(n + "pathString" + i + t, a_a_default(n))
};

function get_headers(tid) {
    var t = '/api/people/getrelatcompany?keyno=pac1d468055811d835c90bf67aa9c656&pagesize=10';
    var i = a_default(t, undefined)
    var l = r_default(t, undefined, tid);
    return {i:l}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

爬虫逆向实战(30)-某查查股东关联公司(HmacSHA512) 的相关文章

随机推荐

  • java实现九九乘法表

    以下仅是我自己的想法 小伙伴们有其他一些好的想法希望多多交流 以上是九九乘法表的运行图 从上图可以分析出 应该使用二重循环 由我之前的文章可知 二重循环外层控制行数 内层控制列数 所以一共有九行九列的二重循环 根据上图 可以很快写出如下代码
  • Java实现分数

    自己独立实现的 如果有bug或者错误 欢迎评论区留言 文章目录 文档 代码 文档 字段摘要 修饰符 字段 解释 static final Fraction ONE 分数 1 分子 分母都是1的分数 static final Fraction
  • URL——详解

    什么是URL URL 是 统一资源定位符 Uniform Resource Locator 的首字母缩写 中文译为 网址 表示各种资源的互联网地址 下面就是一个典型的 URL https www example com path index
  • 区块链:Solidity值类型(String字符串、固定大小字节数组、动态大小字节数组之间的转换)

    固定大小字节数组 Fixed size byte arrays 之间的转换 pragma solidity 0 4 4 contract C bytes9 name9 0x6c697975656368756e function bytes9
  • 【PyTorch教程】06-如何使用PyTorch搭建神经网络模型并进行训练

    本期目录 1 背景 2 神经网络中的输入输出关系 2 1 卷积层输入输出关系 2 2 填充输入输出关系 2 3 步幅输入输出关系 2 4 池化层输入输出关系 3 搭建网络 3 1 测试 3 2 总结 4 损失函数 5 反向传播 6 权重更新
  • 【java】FeignClient GET请求用对象传参 注解 @SpringQueryMap,@Param,@JsonProperty

    使用 SpringQueryMap 可以在 get 请求的时候使用对象传递参数 说明和例子如下 特别注意 使用 SpringQueryMap的情况下 需要使用 Param 来设置输出的别名 而不能使用 JsonProperty 例如 Que
  • MVC和三层架构的区别

    M Model 模型 应 程序的核 功能 管理这个模块中 的数据和值 bean dao V View 视图 视图提供模型的展示 管理模型如何显示给 户 它是应 程序的外观 jsp html C Controller 控制器 对 户的输 做出
  • “Java 8新特性:Lambda表达式与函数引用的详细之道“

    文章目录 思想概述 面向对象思想写代码 Lambda表达式的使用场景 Lambda表达式对接口的要求 Lambda表达式的语法 Lambda表达式格式 Lambda表达式的进阶语法 参数部分的精简 函数引用 静态方法的引用 非静态方法的引用
  • 运维之企业内部DNS主从服务搭建与安全配置实践(精选)

    0x00 实践案例 1 企业内部DNS主从服务搭建配置 Master 主DNS配置 Slave 从DNS配置 主从配置验证启用 主从服务工作测试 主从同步记录测试 主从同步日志查看 2 企业内部DNS主从服务安全配置 1 创建 TSIG 密
  • Best Binary String

    Best Binary String 题意 给一个包含0 1 的字符串 可以换成0或1 要求换完之后使得成本最小 二进制字符串的成本定义为按非降序对字符串进行排序所需的 反转字符串的任意连续子字符串 形式的最小操作数 思路 因为每次操作是反
  • 土壤水分传感器原理 组成介绍

    土壤水分传感器也叫土壤含水率 土壤湿度传感器 它是采FDR频域法测量 利用电磁脉冲原理 根据电磁波在介质中传播频率来测量土壤的表观介电常数 从而得到土壤容积含水量 v 外型小巧轻便 便于携带和连接 土壤温湿度测量传感器由电源模块 变送模块
  • 即时配送的订单分配策略:从建模和优化(学习笔记)

    目录 O2O即时配送智能调度系统 外卖订单分配问题描述 题分析和建模 高效求解问题的第一步 问题建模中的机器学习 订单 骑手的匹配优化 应对强随机性 仿真系统 结语 O2O即时配送智能调度系统 目前各外卖平台正在优质供给 配送体验 软件体验
  • 【解决办法】windows防火墙出入站规则放通telnet方法

    操作方法 windows防火墙出站规则放通telnet方法 一 出站规则 1 新建出站规则中选择 程序 2 选择路径 点击 下一页 3 选择 允许连接 4 选择所有区域 二 入站规则 注 打开防火墙添加出入站规则参考 操作方法 window
  • 关于不同型号电脑谷歌浏览器下载指定版本的方法(超详细教程)

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 1 根据链接打开地址 2 页面说明 3 下载过程 1 选中指定版本点击它 这里以52 0 27 37 1为例 2 选中chrome win32 zip后自动下
  • nacos2.2.2在部分windows系统无法启动,报\XXXXX.dll: Can‘t find dependent libraries

    nacos2 2 2在部分windows系统无法启动 报以下异常 Caused by org springframework beans factory UnsatisfiedDependencyException Error creati
  • 无需编程经验,也能制作租车预约微信小程序,快速上手

    现在 制作租车预约微信小程序不再需要编程经验 只需几个简单的步骤 您就可以拥有自己的租车预约微信小程序 在本文中 我们将介绍如何利用乔拓云网后台来制作租车预约微信小程序 并实现您所需的功能 首先 我们需要进入乔拓云网后台 并点击 轻应用小程
  • CGAL 基于曲面拟合的点云平滑

    目录 一 算法原理 1 主要函数 二 代码实现 三 结果展示 一 算法原理 基于曲面拟合的方法 实现对点云的平滑处理 1 主要函数 头文件 include
  • python+selenium自动化测试解决不了的alert问题,使用PyKeyboard解决方法

    在python自动化测试中 面对浏览器弹出的对话框 python自带的alert可能解决不了关闭弹框 这时候可以引入PyKeyboard来解决 下载并安装pyHook 1 5 1 cp36 cp36m win amd64 whl 下载地址h
  • Arduino实现真正的物联网-通过MQTT服务器-两块板子远程通信

    该博客现已搬运到我的个人博客 上 之后我也会在自己的博客上更新一些东西 这里放上文章链接 我在做竞赛项目的时候 在板子和板子远程交互上做的东西 百度上找到的东西也都是七零八碎的 同时也希望我的博客能给大家一点微薄的帮助 PS 我也是第一次写
  • 爬虫逆向实战(30)-某查查股东关联公司(HmacSHA512)

    一 数据接口分析 主页地址 某查查 1 抓包 通过抓包可以发现数据接口是api people getRelatCompany 2 判断是否有加密参数 请求参数是否加密 无 请求头是否加密 通过查看 标头 可以发现 请求头中有一个key和va