[原创] 猿人学学员题34题 js加课例题1 逆向分析

查看 46|回复 7
作者:ZenoMiao   
本次分析的地址为: aHR0cHM6Ly93d3cucHl0aG9uLXNwaWRlci5jb20vY2hhbGxlbmdlLzM0
看题目可以知道  只是一个简单的cookie加密, 就直接从cookie入手, 其他的先不管了


image.png (27.77 KB, 下载次数: 0)
下载附件
2025-6-18 10:24 上传

先在后台把除了sessionid这个cookie以外  全清理掉, 然后打开f12抓包工具 ,刷新页面看一下
可以看到34这个链接是请求了2次  并且内容都是不一样的, 中间还有h1和h2的js包导入.
第一次请求34的时候有set-cookie 所以yuanrenxue34这个cookie是返回的, 无需理会
但是在第二次请求的时候却多了一个名为iloveu的cookie, 此cookie应该是加密的


image.png (26.14 KB, 下载次数: 0)
下载附件
2025-6-18 10:30 上传



image.png (59.4 KB, 下载次数: 0)
下载附件
2025-6-18 10:28 上传



image.png (18.67 KB, 下载次数: 0)
下载附件
2025-6-18 10:31 上传

第一次访问的34内容中 除了一堆看不懂的东西以外还有一个名为的执行方法sEnc, 单步跟进去后发现可以代码new Date()  document['cookie']这些东西


image.png (25.15 KB, 下载次数: 0)
下载附件
2025-6-18 10:55 上传



image.png (23.43 KB, 下载次数: 0)
下载附件
2025-6-18 10:58 上传

我也不管他是什么加密了, 直接扣代码吧. 直接吧sEnc整个方法扣下来
把他的cookie console.log出来, 然后补一下document环境, 一直运行  缺什么扣什么


image.png (122.24 KB, 下载次数: 0)
下载附件
2025-6-18 11:01 上传

当你扣到一半的时候 发现rind(rnns)未定义的报错, 经过分析后这两个参数是在第一次请求34的链接返回的, 只需要通过正则提取即可, 在js调试过程中暂时写死吧  到时候再给个参数替换就好


image.png (30.86 KB, 下载次数: 0)
下载附件
2025-6-18 11:10 上传

扣完了之后把动态参数设置好, 方便替换
[Python] 纯文本查看 复制代码
rind = "rind_value"
rnns = "rnns_value"
cookie = process.argv[2] + " " + process.argv[3];
document = {
    // 'cookie': "sessionid=zfhz0eh8he1idqnd5k7fpc9xa0zx7l6q; yuanrenxue34=XOaZw4ReMk",
    'cookie': cookie,
    'domain': 'www.python-spider.com'
}
因为他的cookie是需要当值传回去, 并且还要更新, 所以我会单独把cookie拿出来不放在headers里面
[Python] 纯文本查看 复制代码
cookie = {
        'sessionid': 'zfhz0eh8he1idqnd5k7fpc9xa0zx7l6q'
    }
    response = requests.get(url, headers=headers, cookies=cookie)
    rind = re.findall(r'/\*\*//\*\*/(\d{2,3})//FDi5u', response.text)[0]
    rnns = re.findall(r'""\*/="(\w+)"', response.text)[0]
请求完第一次获取到rind和rnns参数之后, 对js文件进行替换
[Python] 纯文本查看 复制代码
    # rind和rnns值的替换
    with open('34.js加课例题1.js', 'r', encoding='utf-8') as f:
        file = f.read()
        with open ('test.js', 'w', encoding='utf-8') as f:
            f.write(file.replace('rind_value', rind).replace('rnns_value', rnns))
替换完之后 把获取到的最新的cookie, yuanrenxue34和sessionid两个cookie拼接起来用来加密
[Python] 纯文本查看 复制代码
    cookie = str()
    for i in response.cookies.items():
        cookie += '='.join(i) + "; "
然后用subprocess调用node来运行js文件返回结果
[Python] 纯文本查看 复制代码
    iloveu = subprocess.Popen(f"node test {cookie[:-2]}", encoding="utf-8", stdout=subprocess.PIPE)
    iloveu = iloveu.stdout.read().replace('\n', "")
    cookie = requests.cookies.get_dict()
    cookie['iloveu'] = re.findall("iloveu=(\w+);", iloveu)[0]
打完收工, 核心代码都在上面了, 具体代码照常不贴 提高动手能力

下载次数, 下载附件

天南地北一群魔   

谢谢分享!。
W971030   

感谢分享
shanhu5235   

谢谢你的付出
prience0118   

有python-spider这个网站的邀请码吗 ,能给一个吗
lorne   

大佬666啊
风/生/水/起   

学些学些
Liebesfreud   

大佬讲解细致,太厉害了
您需要登录后才可以回帖 登录 | 立即注册

返回顶部