js混淆爬取小姐姐壁纸

逆向目标

目标:某壁纸响应数据加密逆向
网站:aHR0cHM6Ly9iei56enptaC5jbi9zZWFyY2g=
逆向参数:OB 混淆、result:“ak+9VCsq4dEdB+UdVfGo8kh5JD……”
今天给大家带来的是爬取小姐姐壁纸,其实我是不想的,因为我不喜欢看这种的,咳咳!

抓包分析

老套路,F12抓包,发现返回数据是加密的,这时我们该怎么做呢
在这里插入图片描述
今天我们采用HOOK的方式,来进行解决。如果有小伙伴对hook不熟悉或不了解的,
可以参考K哥的这篇文章:https://blog.csdn.net/kdl_csdn/article/details/120548182

使用以下hook脚本注入到控制台。

var my_parse = JSON.parse;
JSON.parse = function (params) {
    
    
    debugger;
    console.log("json_parse params:",params);
    return my_parse(params);
};

在这里插入图片描述
然后我们点击下一页进行触发脚本操作。
在这里插入图片描述
点击倒三角执行脚本,就会拦截到响应的加密数据
在这里插入图片描述
这时我们继续执行脚本,就会得到解密数据。这时候我们就可以跟栈进行调试了。看是怎么解密的,然后模拟解密逻辑即可。

在这里插入图片描述
如下图就是解密位置。我们跟进去

在这里插入图片描述
点击进入
在这里插入图片描述

下断点,后面就是扣代码,实现解密逻辑。根据分析这个解密是有三个函数嵌套而成。所以我们只要一步步扣取每个函数即可。我就不加赘述了。
在这里插入图片描述
在这过程中,要注意 window[‘atob’]这个方法,这是base64解码,在node.js pycharm中直接用atob即可。
在这里插入图片描述
在这里插入图片描述
最后就成功解密了
在这里插入图片描述
发现解密中的i与我们在元素页面找到的图片完整地址相比少了20.因此再用python请求时,我们只需拼接上去即可。
在这里插入图片描述
在这里插入图片描述

最终结果

最后使用python也是成功实现下载。缺点就是图片是压缩的。如果想高清下载。还是得去网站下载。这里只是分享技术。
python代码只展示关键部分,已做脱敏处理。

"""
@FileName:某壁纸.py
@IDE     :PyCharm 
@Author  :落花为谁
@Date    :2023/6/6 19:43 
"""
import json
import requests
import execjs
from loguru import logger

url = "脱敏处理"
headers = {
    
    
    "authority": "脱敏处理",
    "content-type": "application/json;charset=UTF-8",
    "origin": "脱敏处理",
    "pragma": "no-cache",
    "referer": "脱敏处理",
    "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36"
}


for d in range(1, 5):
    data = {
    
    
        "category": "2",
        "categoryId": "0",
        "color": "0",
        "current": str(d),
        "ratio": "0",
        "resolution": "1",
        "size": "24",
        "sort": "1"
    }
    res = requests.post(url, headers=headers, json=data)
    result = res.json().get('result')
    datas = execjs.compile(open('1.js', encoding='utf-8').read()).call('decrypt', result)

    data = json.loads(datas)
    # # https://脱敏处理/bz/v3/getUrl/b9ffdd6c84544695bd4b1e4182a06dde20
    for u in data['list']:
        img_url = '脱敏处理' + u['i']+ '2' + str(0)
        res = requests.get(url=img_url, headers=headers)
        with open(f'D:\\pics\\脱敏处理/{
      
      u["i"]}.webp', 'wb') as f:
            f.write(res.content)
            logger.success(f"download success {
      
      u['i']}.webp")

最终效果
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_69218005/article/details/130114716
今日推荐