爬虫逆向实战(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}
}
相关推荐
Experience-摆渡3 小时前
Firecrawl深度调研报告:功能、实现原理、架构与自研落地建议
爬虫
深蓝电商API8 小时前
Hook XMLHttpRequest 实战
爬虫·hook
quantdash_cc1 天前
告别自建 Requests/BS4 网页爬虫:基于 QuantDash 搭建零维保的高性能量化行情流水线
开发语言·爬虫·python·pandas·量化·quantdash
Patrick在香港1 天前
Python爬虫框架实战:优雅抓取香港政府公开API数据的通用方案
java·开发语言·爬虫·python·ai编程·数据可视化·可用性测试
鬼手点金2 天前
与LLM结合的主流智能爬虫框架
爬虫·python·llm·post·request·firecrawl·crawl4ai
天启HTTP3 天前
爬虫频繁弹验证码?解析网站反爬检测机制
网络·爬虫·tcp/ip
深蓝电商API3 天前
如何快速定位加密函数?
爬虫·加密函数
oh,huoyuyan4 天前
网页公开数据采集工具推荐
人工智能·爬虫·火车采集器
崔子末4 天前
某影视库剧集列表以及查询接口逆向
爬虫·python
雪山青木4 天前
全国微博签到数据201912-202004
大数据·爬虫·python·数据挖掘·数据分析·新浪微博