当前位置: 首页 > news >正文

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

一、数据接口分析

主页地址:某查查

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}
}
http://www.lryc.cn/news/160644.html

相关文章:

  • 多态(个人学习笔记黑马学习)
  • 线程中future/atomic/async及nlohmann json的学习
  • windows安装MongoDB后进入命令交互界面失败解决方案
  • 基于Java+SpringBoot+Vue前后端分离高校专业实习管理系统设计和实现
  • E. Hanging Hearts
  • docker安装RabbitMQ教程
  • Java虚拟机整型数加载指令学习
  • Docker 实现 MySQL 一主一从配置
  • Python编程练习与解答 练习113:避免重复
  • 线上 udp 客户端请求服务端客户端句柄泄漏问题
  • 合宙Air724UG LuatOS-Air LVGL API控件-窗口 (Window)
  • 80 # 图片防盗链
  • App自动化测试持续集成效率提高50%
  • LeetCode —— 复写零(双指针)
  • 【Vue篇】Vue 项目下载、介绍(详细版)
  • Python批处理(一)提取txt中数据存入excel
  • 只考一门数据结构!安徽工程大学计算机考研
  • Ubuntu 20.04出现蓝牙无法打开的问题(已解决)
  • 并发测试工具 apache-jmeter使用发送post请求JSON数据
  • 牛客练习赛115 A Mountain sequence
  • 通过git bash激活虚拟环境遇到的问题
  • EasyAVFilter代码示例之将摄像机RTSP流转成RTMP推流输出
  • 【【C语言康复训练-4】】
  • [DM8] DM-DM DBLINK DPI方式
  • 创建了一个名为nums_list的vector容器,其中存储了一系列的pair<int, int>
  • SpringMVC文件上传、文件下载多文件上传及jrebel的使用与配置
  • Leetcode143. 重排链表
  • Git 回顾小结
  • 响应式布局(3种) + flex计算
  • Pytorch从零开始实战01