爬虫逆向实战(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源代码:

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}
}
相关推荐
Caco_D9 天前
一行代码抓遍全网 20 个热榜!Aneiang.Pa 4.0 发布 — 极简 .NET 爬虫库
爬虫·.net
太岁又沐风14 天前
复现并修掉ART hook框架 Pine 调用原方法时的偶发 SIGSEGV
爬虫
隔窗听雨眠15 天前
大模型加爬虫上篇:技术融合与架构革新
爬虫·架构
Super Scraper15 天前
如何批量抓取 TikTok 数据而不被封锁?完整指南
爬虫·ai·自动化·抖音·tiktok·ai agent
深蓝电商API15 天前
自动化录屏 + 截图:打造爬虫调试的上帝视角
爬虫
tang7778915 天前
市场调研自动化采集架构:基于住宅IP轮换的APP数据抓取与反风控方案
爬虫·动态代理ip·爬虫代理ip·爬虫动态ip·住宅代理ip·动态住宅ip
数据知道15 天前
指纹浏览器环境的导入、导出、快照与云端同步机制
爬虫·数据采集·指纹浏览器
星川皆无恙15 天前
大数据k-means聚类算法:基于k-means聚类算法+NLP微博舆情数据爬虫可视化分析推荐系统(新版)
大数据·人工智能·爬虫·算法·机器学习·自然语言处理·kmeans
小二·15 天前
Rust 爬虫与数据处理实战:大规模并发抓取 + 流式处理
开发语言·爬虫·rust