【码上爬】 题九:webpack调试 堆栈分析

暗号:aHR0cHM6Ly9tYXNoYW5ncGEuY29tL3Byb2JsZW0tZGV0YWlsLzkv

题目:

先分析数据接口,可以看到m和tt是加密的:

然后在发起程序的最上面的堆栈下一个断点,断点断住后调整堆栈,并且观察作用域,查找加密值的生成位置:

所有堆栈都看完了,但是还是没有找到,最后检查这里的堆栈,发现给m和tt赋值了:

断点后m的值就在这里生成:

其实就是使用c函数对一个包含时间戳的字符串进行加密:

但是仔细检查c里面的代码,会发现加密值是在这里生成:

还原后,它就是一个sha1加密:

最后安装crypto-js (使用npm install crypto-js) ,加密的代码仅需要3行:

当然也可以直接生成python代码, tt的生成更简单,就是将时间戳进行base64加密,也可以直接使用python生成,最后就能够正确获取到数据了:

附上完整python代码(headers和cookie 已经删除):

复制代码
import hmac

import hashlib

import time

import requests

import json

import base64

def base64_encode(text: str) -> str:

    """

    字符串 Base64 加密

    和 JavaScript: CryptoJS.enc.Base64.stringify(CryptoJS.enc.Utf8.parse(text)) 结果一致

    """

    # 转 utf-8 字节 → base64 编码 → 转回字符串

    bytes_data = text.encode("utf-8")

    base64_bytes = base64.b64encode(bytes_data)

    return base64_bytes.decode("utf-8")

def get_signature():

    # 获取当前时间戳(毫秒级,和 JS new Date().getTime() 完全一致)

    sjc = int(time.time() * 1000)



    # 拼接字符串:9527 + 时间戳

    data = f"9527{sjc}"



    # 密钥

    key = "xxxooo"



    # HmacSHA1 加密(和 crypto-js HmacSHA1 结果完全相同)

    hmac_result = hmac.new(

        key.encode('utf-8'),

        data.encode('utf-8'),

        hashlib.sha1

    )



    # 转成 16 进制小写字符串(crypto-js 默认输出格式)

    a = hmac_result.hexdigest()



    # 返回最终结果 + 时间戳(方便你对接接口)

    return a, sjc

sign, timestamp = get_signature()

headers = {}

cookies = {}

url = "https://mashangpa.com/api/problem-detail/9/data/"

data = {

    "page": 2,

    "m": sign,

    "tt":base64_encode(str(timestamp))

}

data = json.dumps(data, separators=(',', ':'))

response = requests.post(url, headers=headers, cookies=cookies, data=data).json()

print(response)
相关推荐
子兮曰4 天前
jev-ultrafast 深度解析:7 秒订机票的浏览器 Agent 是如何炼成的
前端·后端·agent
子兮曰4 天前
Jev 爆发一周:7 秒 Agent 背后的 System One 生态与三场争议
前端·后端·ai编程
前端小万4 天前
写公众号赚了 3000 块后,我做了一款叫 "一键成稿" 的软件
前端·微信小程序
爱勇宝4 天前
ZCode 开源 24 小时:一份没有历史的账本,回答不了"有没有偷代码"
前端·后端·chatglm (智谱)
三十而立洋4 天前
Cookie 详解:从产生到安全,一次讲透
前端·javascript
卡布鲁4 天前
把一个 Vite + Vue3 应用塞进 qiankun (React + Umi3) 主站:十个坑的复盘
前端·javascript·react.js
汉堡大王95274 天前
Jev:不是聊天机器人, 而是一个智能 if 语句
前端·人工智能·后端
梦想很大很大4 天前
从运行事实到回归证据:Workrun 的 Telemetry 与 Evaluation 实践
前端·人工智能·后端
计算机魔术师4 天前
Meta Muse agent 接入 Shopify 的 Shop Pay 实现代理式购物
前端
沙蒿同学4 天前
我用 Go 搭了一条 AI Agent 流水线:从 1 张商品图到一整套淘宝详情页
前端·javascript·后端