爬虫逆向实战(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}
}
相关推荐
waterHBO18 分钟前
( github actions + workflow 01 ) 实现爬虫自动化,每2小时爬取一次澎湃新闻
爬虫·自动化·github
q567315231 小时前
Java使用Selenium反爬虫优化方案
java·开发语言·分布式·爬虫·selenium
xbotcoding2 小时前
Scrapeless Crawl:规模化网络数据抓取与爬行解决方案
爬虫
不叫猫先生6 小时前
Bright Data网页抓取工具实战:BOSS直聘爬虫 + PandasAI分析洞察前端岗位市场趋势
爬虫·python·ai·代理
华科云商xiao徐6 小时前
用Rust如何构建高性能爬虫
爬虫·rust
华科云商xiao徐7 小时前
Go语言高并发爬虫程序源码
爬虫
一个天蝎座 白勺 程序猿9 小时前
Python爬虫(54)Python数据治理全攻略:从爬虫清洗到NLP情感分析的实战演进
爬虫·python·自然语言处理
一个天蝎座 白勺 程序猿1 天前
Python爬虫(53)Python爬虫数据清洗与分析实战:Pandas+Great Expectations构建可信数据管道
爬虫·python·pandas
weixin_377634841 天前
【python异步多线程】异步多线程爬虫代码示例
开发语言·爬虫·python
广州正荣1 天前
Scrapy-Redis分布式爬虫架构的可扩展性与容错性增强:基于微服务与容器化的解决方案
人工智能·爬虫·科技