image.png (331.79 KB, 下载次数: 0)
下载附件
2024-2-3 17:43 上传
image.png (91.14 KB, 下载次数: 0)
下载附件
2024-2-3 23:44 上传
发现两个post,咱也不知道哪个post有啥用,都模拟一下:
[Python] 纯文本查看 复制代码import requests
url = "https://elearning-train-gateway.ykt.eduyun.cn/v3/spi/trains/action_rules?current_train_id=ee0d68b5-6a9d-441b-97dc-d52bfdfece83&action=access&need_verify_audit=true"
headers = {
"accept": "application/json, text/plain, */*",
"accept-language": "zh-CN,zh;q=0.9",
"authorization": "MAC id=\"7F938B205F876FC39BD5FD64A3C6E3CBBC682E5F9A58550F6BD9431CE859CF308D8C762D1AFFBAFECC7CF21AF76E4BDB127\",nonce=\"1706953412553:K218AKFG\",mac=\"RdDeqkQbGgPgWGleCn2JiYbFsQo6zknDjZx2sE=\"",
"cache-control": "no-cache",
"pragma": "no-cache",
"sdp-app-id": "e5649925-441d-4a53-b525-51a2f1c4e0a8",
"sec-ch-ua": "\"Not.A/Brand\";v=\"8\", \"Chromium\";v=\"114\", \"Google Chrome\";v=\"114\"",
"sec-ch-ua-mobile": "?0",
"sec-ch-ua-platform": "\"Windows\"",
"sec-fetch-dest": "empty",
"sec-fetch-mode": "cors",
"sec-fetch-site": "cross-site"
}
response = requests.get(url, headers=headers)
print(response.text)
[Python] 纯文本查看 复制代码import requests
url = "https://elearning-train-gateway.ykt.eduyun.cn/v2/spi/trains/ee0d68b5-6a9d-441b-97dc-d52bfdfece83/actions/async_joins"
headers = {
"accept": "application/json, text/plain, */*",
"accept-language": "zh-CN,zh;q=0.9",
"authorization": "MAC id=\"7F938B205F876FC39BD5FD64A3C8216721E3CBB2C0F6BD9431CE859CF308D8C762D1AFFBAFECC7CF21AF41C4BDB127\",nonce=\"1706953412840:CAPWS9EJ\",mac=\"HhPbxhQ0Psggvvpg1YYioggaJ3Pc/tUfaNGe0Zfepqs=\"",
"cache-control": "no-cache",
"content-type": "application/x-www-form-urlencoded",
"pragma": "no-cache",
"sdp-app-id": "e5649925-441d-4a53-b525-51a2f1c4e0a8",
"sec-ch-ua": "\"Not.A/Brand\";v=\"8\", \"Chromium\";v=\"114\", \"Google Chrome\";v=\"114\"",
"sec-ch-ua-mobile": "?0",
"sec-ch-ua-platform": "\"Windows\"",
"sec-fetch-dest": "empty",
"sec-fetch-mode": "cors",
"sec-fetch-site": "cross-site"
}
data = None
response = requests.post(url, headers=headers, data=data)
print(response.text)
能够模拟立即报名的前提是信息完整度100%。
前后端分离项目逆向成也Authorization,败也Authorization,首当其冲的是解决Authorization。
如上面代码片段所示,headers 中的Authorization是直接复制浏览器出来的,具体他是怎么产生的呢?
因为学历太低,根本不知道怎么形成的,只有暴力搜索:
image.png (325.1 KB, 下载次数: 0)
下载附件
2024-2-3 23:46 上传
这个函数好复杂,鼠标摆上去一个一个查看是什么意思:
image.png (139.02 KB, 下载次数: 0)
下载附件
2024-2-4 00:02 上传
image.png (373.04 KB, 下载次数: 0)
下载附件
2024-2-3 23:48 上传
e是一个链接 "https://uc-gateway.ykt.eduyun.cn/v1.1/users/452596678222?with_ext=true&session_id=637ec2d0-17bf-4108-b602-2a55xxxxxxcd"
t是get
n感觉是登录后的一系列参数:xxxxxxxxxxxx
进入这个函数,还有个Ge函数,是骡子是马溜出来看看:
image.png (58.36 KB, 下载次数: 0)
下载附件
2024-2-3 23:49 上传
根本看不懂!
真的费力,这不,He(i)和Ze(e, s, t, o)又是啥,javascript没学过,还带那么多参数,想想都可怕,要不,问问AI?
先解决He(i)
[JavaScript] 纯文本查看 复制代码function He(e) {
return (new Date).getTime() + parseInt(e, 10) + ":" + Ne(8)
}
[JavaScript] 纯文本查看 复制代码function Ze(e, t, n, r) {
var o = f.parse(e)
, i = t + "\n" + n.toUpperCase() + "\n" + o.relative + "\n" + o.authority + "\n";
return ee.HmacSHA256(i, r).toString(ee.enc.Base64)
}
image.png (139.75 KB, 下载次数: 0)
下载附件
2024-2-3 23:56 上传
差Ne函数,
[JavaScript] 纯文本查看 复制代码function Ne(e) {
for (var t = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ".split(""), n = "", r = 0; r
再来
image.png (139.4 KB, 下载次数: 0)
下载附件
2024-2-3 23:57 上传
哦哦,原来是这个意思。
用python模拟出来:
[JavaScript] 纯文本查看 复制代码import random
import time
def Ne(e):
t = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
n = ""
for i in range(e):
n += t[random.randint(0, 35)]
return n
def He(i):
timestamp = int(time.time())
return str(timestamp) + str(i) + ":" + Ne(8)
好了,解决完He(i),准备来解决Ze(e, s, t, o),
先看看这个函数是神马意思:
image.png (131.37 KB, 下载次数: 0)
下载附件
2024-2-3 23:58 上传
哦哦,原来是这个意思。
那么,就来下断点,运行,看看到底是啥。运行到此处的时候,鼠标摆上去,咋变量不显灵了?
一看log发现还有限制,这些蛛丝马迹可能就是后面能否模拟自动学习的关键,给截个图摆着:
image.png (181.66 KB, 下载次数: 0)
下载附件
2024-2-4 00:00 上传
重新运行到此处,感觉思路足见清晰:
成也Authorization,败也Authorization,20楼有大老说这个他也搞过,并不能模拟出来,我想这里就被套路了。
(因截图泄漏个人账号数据,择日重新上传