看题目可以知道 只是一个简单的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]
打完收工, 核心代码都在上面了, 具体代码照常不贴 提高动手能力