拓者设计吧app网络推广seo
引言
在现代Web开发中,前端加密技术被广泛应用于API接口的安全防护。本文将深入分析一个基于CryptoJS的HMAC-SHA1加密案例,并展示如何通过Python完整还原加密过程,实现自动化数据抓取。
一、JavaScript加密机制解析
1. 核心加密函数分析
const CryptoJS = require('crypto-js')function decrypt123(){// 获取当前时间戳var f = (new Date)['getTime']()// 将时间戳进行Base64编码tt = btoa(f)// 使用HMAC-SHA1算法生成签名m = CryptoJS["HmacSHA1"]('9527' + f, "xxxooo")["toString"]()return {"m": m, "tt": tt}
}
加密流程解析:
-
时间戳获取:使用
Date.getTime()
获取当前毫秒级时间戳 -
Base64编码:通过
btoa()
将时间戳编码为Base64字符串(tt参数) -
HMAC-SHA1签名:使用固定字符串"9527"拼接时间戳,以"xxxooo"为密钥生成签名(m参数)
2. 加密参数特点
参数 | 生成方式 | 作用 |
---|---|---|
tt | 时间戳Base64 | 请求时效验证 |
m | HMAC-SHA1签名 | 请求合法性验证 |
二、Python逆向实现
1. 环境准备
import requests
import json
import execjs
import base64
import hmac
import hashlib
2. JavaScript执行环境配置
with open('demo.js', 'r', encoding="utf-8") as f:js_code = f.read()ctx = execjs.compile(js_code)
3. 纯Python实现加密
def python_decrypt123():# 获取时间戳timestamp = int(time.time() * 1000)# Base64编码tt = base64.b64encode