mmz批量多页抓取数据-AES.CBC算法-爬虫

目标:mmz多页下载

方法:加一个for循环实现多页的下载

问题:浏览器传输服务器时对页码参数做了加密处理

解决方法:

1、判断加密算法模式(mmz是AES-CBC算法)

2、找到加密的key和iv

代码:

python 复制代码
import json
import time

import requests
import base64
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad,unpad

for page in range(2, 10):
    # ==============================================第一部分(模仿浏览器对页码加密传输服务器)=================================
    # 获取到mmz网站加密的明文数据
    data = {"Type": 0, "page": page, "expire": 1710571993849}
    # dic转化为json字符串进行处理
    data = json.dumps(data)
    # print(type(data))
    fill_btext = pad(data.encode(), 16)
    # print(fill_btext)

    # 解析mmz网站js拿到kv,浏览器向服务器传送加密的kv
    key = '55b3b62613aef1a0'.encode()
    vi = key
    encry = AES.new(key, AES.MODE_CBC, vi)
    # AES加密
    encry_data = encry.encrypt(fill_btext)

    # 加密 b64
    b64encode_data = base64.b64encode(encry_data)
    # print(b64encode.decode())
    # ============================================第二部分(拿到加密的参数获取服务器返回的数据并解密)=================================
    # 解密服务器返回的数据

    cookies = {
        'PHPSESSID': '48nu182kdlsmgfo2g7hl6eufsa',
        'Hm_lvt_6cd598ca665714ffcd8aca3aafc5e0dc': '1710568549',
        'SECKEY_ABVK': 'FUnr+pnCS/p1Ou/WiS6a82jLBmKcwlQfvALD/bEpSYS0EV42eXkFNYpCmcekNiiKvyrlcEHfDw6QLw7GSqcv/w%3D%3D',
        'Hm_lpvt_6cd598ca665714ffcd8aca3aafc5e0dc': '1710568575',
        'BMAP_SECKEY': 'FUnr-pnCS_p1Ou_WiS6a82jLBmKcwlQfvALD_bEpSYRjgInAaoK-vELl57QFAxX-y1kv64ZfrWIegR6xAqZk5YPrHMNgpor4__VOFQ2YBt9ZLJyD0Ru3kQ8TLNDX9tgT2rE6la_DNO7NooPoKY8lg-7nkrw7RqULcxikq6qpjt72ToZ7LhtjeWs5kU5TcRy2ruVzAKFKBpjmyUlPmKeBwJM_HQkgSUF_-wJjonbLE8U',
    }
    headers = {
        'Accept': '*/*',
        'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',
        'Connection': 'keep-alive',
        'Content-Type': 'application/json; charset=UTF-8',
        # 'Cookie': 'PHPSESSID=48nu182kdlsmgfo2g7hl6eufsa; Hm_lvt_6cd598ca665714ffcd8aca3aafc5e0dc=1710568549; SECKEY_ABVK=FUnr+pnCS/p1Ou/WiS6a82jLBmKcwlQfvALD/bEpSYS0EV42eXkFNYpCmcekNiiKvyrlcEHfDw6QLw7GSqcv/w%3D%3D; Hm_lpvt_6cd598ca665714ffcd8aca3aafc5e0dc=1710568575; BMAP_SECKEY=FUnr-pnCS_p1Ou_WiS6a82jLBmKcwlQfvALD_bEpSYRjgInAaoK-vELl57QFAxX-y1kv64ZfrWIegR6xAqZk5YPrHMNgpor4__VOFQ2YBt9ZLJyD0Ru3kQ8TLNDX9tgT2rE6la_DNO7NooPoKY8lg-7nkrw7RqULcxikq6qpjt72ToZ7LhtjeWs5kU5TcRy2ruVzAKFKBpjmyUlPmKeBwJM_HQkgSUF_-wJjonbLE8U',
        'Origin': 'https://www.maomaozu.com',
        'Referer': 'https://www.maomaozu.com/',
        'Sec-Fetch-Dest': 'empty',
        'Sec-Fetch-Mode': 'cors',
        'Sec-Fetch-Site': 'same-origin',
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0',
        'sec-ch-ua': '"Chromium";v="122", "Not(A:Brand";v="24", "Microsoft Edge";v="122"',
        'sec-ch-ua-mobile': '?0',
        'sec-ch-ua-platform': '"Windows"',
    }
    response = requests.post('https://www.maomaozu.com/index/build.json', cookies=cookies, headers=headers,
                             data=b64encode_data)
    res = response.text

    # 解密 b64
    b64decode = base64.b64decode(res)

    # 解析mmz网站js拿到kv,服务器向浏览器传送数据的解密kv
    key = '0a1fea31626b3b55'.encode()
    vi = key
    cry = AES.new(key, AES.MODE_CBC, vi)

    # print(cry.decrypt(b64decode).decode())
    # unpad去除填充
    mmz_text = unpad(cry.decrypt(b64decode),16).decode()
    print(mmz_text)
    time.sleep(1)

浏览器和服务器之间关系示意图:

浏览器到服务器加密、服务器到浏览器加密,不一定一样

代码流程:

1、使用方法搜索到加密位置,并断点分析

2、拿到传输的明文数据和key、iv

3、模仿浏览器生成加密数据

4、将加密的数据写入"第二部分代码"的加密参数(data)中

相关推荐
非凡ghost12 分钟前
AI修图不“造假“,摄影师的出片效率加速器
服务器·前端·人工智能·电脑
和裕19 分钟前
光伏储能定制加强型瓦楞纸箱:降低组件运输隐裂率与售后损耗的核心价值
大数据·运维·网络·人工智能·算法
智购科技无人售货机工厂店23 分钟前
2026自动售货机大屏交互设计原则:从信息层级到视觉动线的工程实践~YH
运维·python·单片机·嵌入式硬件·自动化·交互
Ruiery36 分钟前
Linux 6.6内核 PCIe 深度解析(十):PCIe Port Driver(portdrv)— 一个物理 Port,拆出五个逻辑服务
linux·运维·服务器
乐维_lwops1 小时前
网管系统:流量分析如何用“五元组”+“TOPN”透视网络异常?
网络·流量分析·网管系统
Multipath7121 小时前
乾元通基于原生UDP时隙感知的多链路聚合方案
网络·网络协议·5g·安全·udp·智能路由器·实时音视频
天天喝旺仔1 小时前
Python asyncio 异步编程实战:用协程与事件循环构建高性能网络服务
服务器·网络·python·性能优化·fastapi
明航咨询-陈老师1 小时前
ITSS 运行维护服务能力成熟度:2026 新版标准落地后的量化证据链与运维项目投标资质门槛
网络·itss
运维行者_2 小时前
ISP 企业级带宽计费怎么做?网络流量计费的 6 大核心能力
运维·服务器·网络·数据库·支持向量机·接口隔离原则
云边云科技_云网融合2 小时前
混合云多云组网架构:跨云互联、公私融合、云边协同与专线替代全解析
网络·科技