16346159c2
- 新增 platforms/gdgxk.py:base64 登录 → ssoItlmsGxkTicket 换票进 jsxx → /uc/store/courseRegister 取课程 → updateViewTime1 心跳上报进度(无需真播) - platforms/__init__.py 注册;配套抓包脚本与自测脚本 - CHANGELOG / OPTIMIZATION / todo 同步,版本升到 0.0.2
42 lines
1.5 KiB
Python
42 lines
1.5 KiB
Python
"""广东公需课自测:用浏览器抓到的 cookie 走一遍 列表 → 发现 → 心跳。
|
|
|
|
用法:PYTHONPATH=src python script/test-gdgxk.py [课件id]
|
|
"""
|
|
import json
|
|
import sys
|
|
import uuid
|
|
|
|
from study_tool.platforms import gdgxk
|
|
|
|
cid = sys.argv[1] if len(sys.argv) > 1 else ""
|
|
cookies = json.load(open("data/capture-jsglpt-cookies.json", encoding="utf-8"))
|
|
s = gdgxk.new_session(cookies)
|
|
|
|
courses = gdgxk.list_courses(s)
|
|
print("课程数:", len(courses))
|
|
for c in courses:
|
|
print(" ", c["plan_id"], c["name"])
|
|
|
|
if not cid and courses:
|
|
cid = courses[0]["plan_id"]
|
|
|
|
d = gdgxk.discover(s, cid, "")
|
|
print("\n课程:", d["course"])
|
|
print("进度:", d["progress"])
|
|
print("视频:", d["info"])
|
|
cw = d["courseware"][0]
|
|
print("课件:", cw["id"], "| 总长", cw["total"], "| 已看", cw["viewTime"])
|
|
|
|
sid = uuid.uuid4().hex
|
|
sign = gdgxk._sign(s, {"aid": cw["aid"], "id": cw["id"], "sid": sid}, cw["uid"])
|
|
print("\n播放注册签名:", sign)
|
|
print("服务端已看秒数:", gdgxk._view_time(s, cw, cw["uid"], sign))
|
|
|
|
r = gdgxk._xhr(s, "POST",
|
|
gdgxk.X + "/" + cw["aid"] + "/study/video/user/" + cw["id"] + "/updateViewTime1",
|
|
data={"_method": "PUT", "aid": cw["aid"], "isLimit": "false", "md5": sign["md5"],
|
|
"expires": sign["time"], "md5Uid": cw["uid"],
|
|
"lastViewTime": str(min(cw["viewTime"] + 60, cw["total"])),
|
|
"playbackSessionId": sid})
|
|
print("\n心跳响应:", r.status_code, r.text[:300])
|