在现代网络环境中,许多在线教育平台都会采用安全机制来保护用户数据,同时限制部分操作,如虚拟机检测、屏幕录制防护等。本文对爱问云平台的相关数据交互流程进行了分析,并探讨了优化方案,以便用户在合法合规的前提下更好地使用该平台的各项功能。
网络数据交互分析
获取登录界面背景
用户在访问爱问云平台时,浏览器会通过 GET 请求 拉取登录界面的背景图:
复制复制复制复制复制复制复制复制复制复制复制复制复制复制复制复制复制复制复制
复制
GET https://wwwr.aiwenyun.cn/static/yxt/image/loginBg_new2.jpg
这一过程可被网络劫持,以便实现自定义背景或其他视觉优化。
虚拟机检测机制
爱问云平台会检测用户是否运行在 虚拟机环境 下,并通过 POST 请求 发送检测信息:
复制复制复制复制复制复制复制复制复制复制复制复制复制复制复制复制复制复制
复制
POST https://www.aiwenyun.cn/yxt/servlet/antiScreenRecord/nct/getScreenRecordList
请求体内容如下:
复制复制复制复制复制复制复制复制复制复制复制复制复制复制复制复制复制
复制
{
"os" : "virtualMachine"
}
响应信息包含了已知的虚拟机进程列表,例如:
复制复制复制复制复制复制复制复制复制复制复制复制复制复制复制复制
复制
{
"code" : 0,
"execTime" : 3,
"obj" : [
{
"applicationName" : "VirtualBox",
"processName" : "virtualbox"
},
{
"applicationName" : "vmware",
"processName" : "vmware"
},
{
"applicationName" : "bochs",
"processName" : "bochs"
}
]
}
优化方案:
可通过网络代理拦截此请求,并返回一个空的进程列表,以绕过检测。
用户身份验证与系统交互
用户登录验证
用户登录时,平台会通过 POST 请求 进行身份验证:
复制复制复制复制复制复制复制复制复制复制复制复制复制复制复制
复制
POST https://www.aiwenyun.cn/custom/usr/doLogin
请求体包含用户名、密码等信息:
复制复制复制复制复制复制复制复制复制复制复制复制复制复制
复制
{
"loginName" : "testuser",
"passwd" : "md5_hashed_password",
"deviceId" : "unique_device_id",
"osInfo" : "windows 10, Intel i5",
"role" : 1
}
成功登录后,系统会返回 access_token
,用于后续 API 交互:
复制复制复制复制复制复制复制复制复制复制复制复制复制
复制
{
"code" : 0,
"execTime" : 54,
"obj" : {
"access_token" : "abcde12345fghij67890klmno",
"userType" : 1,
"org_id" : 12345,
"name" : "测试用户"
}
}
获取机构信息
用户登录后,可通过 POST 请求 获取机构的配置信息:
复制复制复制复制复制复制复制复制复制复制复制复制
复制
POST https://www.aiwenyun.cn/yxt/servlet/org/getOrgConfig
请求体:
复制复制复制复制复制复制复制复制复制复制复制
复制
{
"orgId": 12345
}
响应示例:
复制复制复制复制复制复制复制复制复制复制
复制
{
"code" : 0,
"execTime" : 10,
"obj" : {
"orgId" : 12345,
"orgOption" : 123,
"theme" : {
"banner" : "https://abc.com/banner.jpg"
}
}
}
该数据包含机构的 主题样式、水印设定、支付方式等关键信息,通过适当修改 orgOption
可能可以调整系统配置。
课程内容管理
获取课程安排
用户可通过 POST 请求 查询课表:
复制复制复制复制复制复制复制复制复制
复制
POST https://www.aiwenyun.cn/gt/servlet/timeTable/getTimeTable
请求体示
复制复制复制复制复制复制复制复制
复制
{
"pageSize" : 20,
"pageStart" : 0,
"startTime" : 1738392424866
}
成功返回后,将包含未来 20 节课的安排。
获取历史课堂信息
用户可查询自己的 回放课程列表:
复制复制复制复制复制复制复制
复制
POST https://www.aiwenyun.cn/liveclassgo/api/v1/history/listRecord
请求体:
复制复制复制复制复制复制
复制
{
"dateFrom" : 1730390400000,
"dateTo" : 1738425599000,
"pageSize" : 50
}
返回的 list
结构包含:
复制复制复制复制复制
复制
{
"name" : "课程A",
"teacher" : "张老师",
"fileId" : "abcd123",
"watchProgress" : 53
}
反屏幕录制检测
爱问云会在课程播放时调用 Windows API SetWindowDisplayAffinity()
,防止用户截屏:
复制复制复制复制
复制
BOOL SetWindowDisplayAffinity(
[in] HWND hWnd,
[in] DWORD dwAffinity
);
参数 | 含义 |
---|---|
WDA_NONE (0x00000000) |
无限制 |
WDA_MONITOR (0x00000001) |
仅允许显示在屏幕上 |
WDA_EXCLUDEFROMCAPTURE (0x00000011) |
禁止截图 |
优化方案:
可以使用 API Hook 技术劫持 SetWindowDisplayAffinity
,将 dwAffinity
设置为 WDA_NONE
,从而解除录屏限制。
复制复制复制
复制
SetWindowDisplayAffinity(hWnd, WDA_NONE);
视频回放获取
课程回放视频的链接格式通常如下:
复制复制
复制
https://filecdn.plaso.cn/liveclass/plaso/{orgid}/{fileId}/ts1/t.m3u8
获取方法:
- 通过
access-token
请求获取fileId
- 拼接 URL
- 使用播放器加载
m3u8
进行观看