简单js加密反爬的处理思路

这里简单分析一下中国 裁 判-文 书网的js加密,不展示具体代码。

先看看要爬什么数据

要爬取的数据

来看看页面源码

页面源码

很显然,页面内容是ajax动态加载的。
那么我们打开浏览器调试工具,刷新页面,选择network–xhr,如下图:
在这里插入图片描述
一个个查看内容,发现第二个内容如下:

在这里插入图片描述
这正是我们需要的数据,分析该请求,可以看到,该请求是post请求,有三个字段是加密字段,如下图:

在这里插入图片描述
我们打开postman进行测试,经过各种测试后发现,请求头里只有cookie是必须的&#x

<think>好的,我现在需要帮助用户解决在爬虫处理AES加密的问题,特别是如何获取和使用key与IV。用户之前已经询问过如何生成AES的key和iv,现在进一步想了解在爬虫逆向中的具体应用。 首先,我需要回顾用户之前的提问和我的回答,确保信息的一致性。之前我介绍了生成key和iv的方法,包括基于密码和盐值的生成以及直接使用固定值的方法,但用户现在的关注点转向了爬虫如何获取这些参数。 接下来,用户提供了三个引用,需要参考这些内容。引用1提到AES解密需要四个参数:key、iv、mode、pad,并提到抓包获取密文。引用2是关于JS逆向获取key和iv的代码示例,涉及将数组转化为字节序列。引用3是一个Python爬虫案例,分析AES加密参数。这些引用说明用户需要具体的逆向工程步骤,可能涉及网络抓包、JS代码分析以及参数提取。 用户的问题是如何在爬虫处理AES加密,获取并使用key和iv。结合之前的回答和引用,我需要分步骤说明常见的逆向方法,并提供示例代码,同时强调安全性和法律问题。 首先,我会考虑抓包分析,这是获取加密参数的基础。比如在开发者工具中查看网络请求,寻找加密参数的位置。然后,需要逆向JavaScript代码,因为很多网站会在前端生成或使用这些参数。这里可能需要调试JS,查找关键词如CryptoJS、AES、encrypt等,定位关键函数,提取key和iv。此外,还可能遇到WebAssembly或混淆代码,需要更深入的分析技巧。 接着,动态Hook技术也是一个有效的方法,通过中间人攻击或浏览器插件拦截加密函数的参数,直接获取key和iv。例如使用Frida工具Hook加密函数,实时捕获参数。 然后,内存dump也是一种方法,但可能复杂且有法律风险,需谨慎使用。 在示例分析部分,可以举一个简单JS逆向案例,展示如何从加密代码中提取参数。比如在JS中找到加密逻辑,分析key和iv的生成方式,并用Python模拟生成过程。 最后,注意事项部分需要强调法律合规性、参数动态变化和机制的存在,提醒用户在实际操作中遵守规定,并注意参数可能定期更换或混淆。 需要确保回答结构清晰,步骤明确,代码示例正确,并且引用之前的资料。同时,生成的相关问题要针对用户可能进一步的需求,比如参数变化、混淆处理、动态调试工具等。</think>### 爬虫处理 AES 加密的 Key 和 IV 获取方法 在爬虫逆向工程中,AES 加密的 Key 和 IV 通常需要从目标网站的 JavaScript 代码或网络请求中动态提取。以下是具体方法和步骤: --- #### **1. 抓包分析加密参数** **目标**:通过抓包工具(如 Chrome DevTools、Fiddler、Charles)观察网络请求,定位加密参数的位置。 - **示例场景**: 若网站请求参数中包含密文(如 `encryptedData`),且响应数据为 AES 加密后的内容,需确认 Key 和 IV 是否通过以下方式传递: - **请求头/请求体**:Key 或 IV 可能直接包含在请求参数中(如 `key=xxx&iv=xxx`)。 - **Cookie/Token**:某些场景下,Key 可能通过动态 Token 生成。 - **固定值**:部分网站使用硬编码的 Key 和 IV(需通过 JS 逆向确认)。 **引用案例**: 在[某看准招聘网站](aHR0cHM6Ly93d3cua2Fuemh1bi5jb20vZmlybS9yZWNydWl0LzBueF8zZ35-Lmh0bWw/a2E9Y29tLXJlY3J1aXQtbW9kdWxlLWV4cG9zZQ==)中,AES 加密参数通过 JS 动态生成,需逆向其加密逻辑[^3]。 --- #### **2. JS 逆向定位 Key 和 IV** **核心思路**:分析前端 JavaScript 代码,定位 AES 加密逻辑,提取 Key 和 IV 的生成逻辑。 **步骤**: 1. **搜索关键词**:在 JS 代码中搜索 `CryptoJS`、`AES`、`encrypt`、`decrypt`、`key`、`iv` 等关键词。 2. **分析加密函数**:找到类似以下代码片段: ```javascript var key = CryptoJS.enc.Utf8.parse("1234567890abcdef"); var iv = CryptoJS.enc.Utf8.parse("abcdef1234567890"); var encrypted = CryptoJS.AES.encrypt(plainText, key, { iv: iv }); ``` 3. **提取动态参数**:若 Key/IV 通过接口动态获取,需追踪其生成逻辑(如调用 `Math.random()`、时间戳哈希等)。 **引用案例**: 在 JS 逆向中,通过解析 `CryptoJS` 的 `words` 数组(存储加密参数)可提取 Key 和 IV[^2]: ```python # 示例代码:将 JS 中的 words 数组转为字节序列 import struct data = {"words": [0x12345678, 0x90abcdef], "sigBytes": 8} byte_sequence = b''.join(struct.pack('>I', num) for num in data["words"]) byte_sequence = byte_sequence[:data["sigBytes"]] key_iv = byte_sequence.decode('latin-1') # AES 参数通常以 Latin-1 编码存储 print(key_iv) # 输出 Key 或 IV ``` --- #### **3. 动态 Hook 技术** **工具**:使用浏览器插件(如 Overrides、Tampermonkey)或中间人工具(如 Frida)拦截加密函数。 **方法**: - **Hook `CryptoJS.AES.encrypt`**:在 JS 执行时,捕获传入的 Key 和 IV。 - **拦截网络请求**:在请求发起前,记录加密参数。 **示例**(Frida 脚本): ```javascript Interceptor.attach(Module.findExportByName("libcrypto.so", "AES_encrypt"), { onEnter: function(args) { var key = args[1].readUtf8String(16); // 读取 AES-128 密钥 var iv = args[2].readUtf8String(16); // 读取 IV console.log("Key:", key, "IV:", iv); } }); ``` --- #### **4. 内存 Dump 分析** **适用场景**:若 Key/IV 在运行时生成且难以逆向,可通过内存分析工具(如 Cheat Engine)提取内存中的密钥数据。 **风险**:需处理调试机制,且可能涉及法律问题。 --- ### **示例:某网站 AES 加密逆向** 以[精灵数据网站](https://www.jinglingshuju.com/)为例: 1. **抓包**:发现请求参数中包含 `encryptedData`。 2. **JS 逆向**:找到加密函数,发现 Key 和 IV 通过以下逻辑生成: ```javascript function generateKey() { var timestamp = Date.now(); return CryptoJS.SHA256(timestamp.toString()).toString().slice(0, 32); // Key 为时间戳的 SHA256 前 32 位 } ``` 3. **Python 模拟**: ```python import hashlib import time timestamp = int(time.time() * 1000) key = hashlib.sha256(str(timestamp).encode()).hexdigest()[:32] iv = hashlib.md5(str(timestamp).encode()).hexdigest()[:16] ``` --- ### **注意事项** 1. **合法性**:确保爬虫行为符合目标网站的 `robots.txt` 和法律法规[^1]。 2. **动态变化**:Key 和 IV 可能定期更换(如基于时间戳),需动态生成。 3. **机制**:部分网站会混淆 JS 代码或使用 WebAssembly 保护加密逻辑。 --- ### 相关问题 1. 如何应对网站 AES 加密参数的动态变化? 2. 如何处理 JS 代码混淆后的 AES 加密逻辑? 3. 有哪些工具可以辅助动态调试加密函数(如 Frida、Xposed)? 4. 如何验证提取的 Key 和 IV 是否正确?
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值