新能源系统增强脚本,v2.0 & version for Via

感谢,会在新版本中同步修改。

如果可能,你能否要求GPT在书签脚本里面“通过unpkg cdn引入vconsole”并且找到对应的带有capture属性的input框?我很好奇在哪里会出现这种情况:rofl:

1 Like

另外其实本来想着能不能做个webview套壳的app,把脚本直接内置进去之类的,但是问了ai,似乎相当于必须手动实现篡改猴的功能,于是放弃,转而想起来via


(其实搜到了那么一两个github上的让webview支持油猴脚本的项目,但是最多的一个只有几十star且最晚更新于3年前,看起来不是很靠谱的样子)
然后又由于这些兼容性问题,这个方案大概彻底没有可行性了

1 Like

强大 :+1:

3 Likes


还是决定用via,把1.0装回去了,可能到考试之类的情况再回app
手写因为固定任务栏所以不需要;强制下载不可用,反正没有强烈需求也就先不装了;ui我个人不那么喜欢黑白风所以没开
回头有时间点话可能研究研究兼容问题

2 Likes

再提个feature:
主观题未作答时隐藏那个空“图片”框(下图下面)
另外对于选择了“放弃补交看答案”的题目(下图上),这个带0分的框是否需要,我也不是特别确定,毕竟没了的话就不太好判断这道题的状态了,问问别人想法?

1 Like

bro!有个好消息!我觉得PWA standalone app能很好地满足你的需求!

  • 单独窗口,就像app
  • 绝对没有地址栏,地址栏始终不存在
  • 完整支持tampermonkey脚本

下面的starbucks app就是基于PWA的,供你观看效果。请注意它app图标右下角的Edge图标(它说明这不是一个真的app,而是app.starbucks.com网站),以及它点开后的效果;以及无论我如何滑动页面,均未见浏览器地址栏。

@RuletheWaves

update:对该starbucks网站做了测试,已确认完全支持油猴脚本

1 Like

这个其实我个人觉得都行…主要是,也看着习惯了:joy:(无奈
看看大家意见咯~

1 Like

主要未提交的情况下那玩意什么用也没有,就占着那么大的高度,还不能点,要展开答题区还必须点题目本身的文字部分

1 Like

的确,说得太对了(破新能源前端什么玩意
我可以做下,下个版本加上这个功能。如果有人觉得不习惯的话也可以在设置里关掉。

1 Like

btw,对PWA有何兴趣(

1 Like

了解了下(问ai),发现实现似乎需要在网站那边做配置?

1 Like

whatever,打算回去先给新能源自己的apk反编译下看看,想知道为什么目前测试的全部浏览器都无法解决考试成绩不显示的问题,而app从来没这个问题

1 Like
反编译后copilot根据目录总结

项目概览

  • 来源:由 APK 使用 JADX 反编译生成,主要用于阅读与分析,直接编译/运行的可行性低(依赖缺失、资源与签名信息不完整、类名经混淆)。
  • 类型:混合容器 App,基于 DCloud HBuilder/uni-app 运行时(io.dcloud.*uni-jsframework*.js、Weex 相关包),以 WebView + 原生能力为主。

技术栈与框架

  • Android 原生(Java/Gradle),最低 minSdkVersion=19,目标 targetSdkVersion=28
  • DCloud/uni-app/Weex 生态(io.dcloud.*weex_*uniapp/*),含自定义模块与组件。
  • 腾讯 X5 WebView(com.tencent.smtt.*)、AndroidX WebKit 边界接口(org.chromium.support_lib_boundary.*)。
  • 第三方库:net.lingala.zip4j(压缩/解压)、pl.droidsonroids.gif(GIF)、org.mozilla.universalchardet(编码探测)等。
  • 原生 .so 位于 app/src/main/lib/armeabi-v7a,含 libweex*libpl_droidsonroids_gif.so 等。
  • 资源与脚本位于 app/src/main/assets,包含 uni-jsframework*.js、大量 Weex/uni 适配代码与一个外部 *.dex39285EFA.dex,疑似动态加载/热更新)。

清单与入口

  • 包名:edu.course.com,应用名与图标在 @string/app_name@drawable/icon
  • 入口 Activity:io.dcloud.PandoraEntryexported=true,含 MAIN/LAUNCHER),核心页面容器:io.dcloud.WebAppActivityio.dcloud.PandoraEntryActivity
  • android:usesCleartextTraffic="true"(允许明文 HTTP)。
  • providerio.dcloud.common.util.DCloud_FileProvider 与广告下载文件 Provider,authorities=edu.course.com.dc.fileprovider
  • Service:下载服务(io.dcloud.sdk.base.service.DownloadService)、DexClassLoaderProviderService(X5 相关 dex 优化)。

权限特征

  • 网络/存储/多媒体/相机/录音等危险权限较多,且存在重复条目。
  • 包含高风险或系统级权限:READ_LOGSMOUNT_UNMOUNT_FILESYSTEMSINSTALL_PACKAGES(普通应用无效或需系统签名)、REQUEST_INSTALL_PACKAGES(允许安装 APK)。
  • 新旧读媒体权限并存:READ_EXTERNAL_STORAGEREAD_MEDIA_*,显示对多 Android 版本兼容的遗留痕迹。
  • 含厂商角标权限:com.huawei.android.launcher.permission.CHANGE_BADGEcom.vivo.notification.permission.BADGE_ICON

混淆与结构

  • 大量类名为简短占位(如 a.javab.java),表明启用了混淆。
  • META-INF/services 暗示存在 JAX‑RS/Jersey 的 SPI 声明,但在反编译工程中未必完整可用。

可见风险与注意

  • 权限请求面广,需重点关注隐私合规与运行期授权。
  • 明文流量开启、动态加载 dex 与广告/下载组件存在,需审视安全与合规。
  • 因为是反编译工程,构建脚本与依赖并不等同于原项目,仅适合静态审计与功能梳理。

总结

  • 这是一个使用 DCloud/uni-app/Weex 的混合安卓应用壳,集成 X5 WebView 与若干多媒体、文件、下载、广告能力。清单显示较强的设备与系统访问能力,且包含动态代码与多厂商适配痕迹。
更多

结论:从“功能页面可在浏览器直接访问”的角度看,用户体验几乎无差别;但技术形态不是“纯系统 WebView 壳”,而是基于 uni-app/DCloud 的混合壳,内置原生运行时与桥接,能力边界更大。

主要区别

  • JS‑Native 运行时与桥接
    • 通过 uni/plusUniViewJSBridge 建立消息通道与生命周期(见文件 ‘app/src/main/assets/apps/__UNI__E5672CB/www/app-view.js’ 中的 plusreadyUniViewJSBridge.publishHandlerweb-viewmessage 监听)。
    • 可直接调用拍照、文件系统、下载、推送等原生能力;纯 WebView 壳通常只有最小桥接或没有。
  • Web 内核与性能
    • 集成腾讯 X5/多内核与优化(见工程依赖与清单特征),对视频、文件预览、兼容性更好;纯壳多用系统 WebView。
  • 资源与离线能力
    • 前端框架与资源打包在 assets 内(uni-jsframework*.js 等),可离线渲染、多 WebView 管理、预加载;纯壳通常只远程 URL。
  • UI 适配与样式处理
    • 自动进行 rpx/upxpx 的单位转换、状态栏/安全区变量替换(见运行时代码对 upx2px--status-bar-height 的处理);纯壳一般不管。
  • 权限与系统集成
    • 申请更广的系统权限、提供 FileProvider、下载服务、APK 安装能力等;纯壳多为最小权限集。
  • 可扩展性与热更新
    • 存在动态加载与原生 .so,具备更强扩展/热更空间;纯壳扩展性受限。

本项目现状

  • 该页实际用 v-uni-web-view 直接指向线上地址(‘app/src/main/assets/apps/__UNI__E5672CB/www/app-view.js’),表现上类似“套壳”。区别在于:它把 uni‑app 的原生容器、桥接与能力一并装进来,随时可以调用原生能力与离线资源,而纯 WebView 壳通常没有这些内建能力。
2 Likes

我的问题,没解释清楚;我的意思是如果你觉得效果还可以,我会通过油猴脚本注入manifest.json等实现新能源PWA。

1 Like

说实在的,反编译不如拿现成的web注入油猴。反编译难度很大,我们试过。就连对yikong(高二的版本,不是学绊)这种更低端的app的反编译进展都很慢

你说的这个问题我们已经研究过了。本质上是一段sessionStorage存储项的寿命非常短导致的。

技术详细信息

“成绩不显示” / “自阅框无法弹出”表象都本质均为sessionStorage中,course_userInfo寿命极端短导致。而该存储项仅与这两个功能有关,而不标记登录状态,因此该存储项失效后其他功能依旧可以正常使用。这【不是】浏览器的问题,也【本就不应该】有任何浏览器能正常显示,因为这是新能源系统自身设计开发时自己导致的bug。

新能源的app,用了一种非常曲线救国的思路。。它每次打开都要重新登录,就会刷出新的这个存储项,从而一段时间内仍然可以显示成绩等。

如果大家有需求,我会将ts的自动注入该存储项的代码集成到下一滚动版本中,实现无感刷,从而始终可以看到成绩和自阅框。

3 Likes

果然,昨天其实最后也有点猜到了,因为反应过来确实app有极高的重新登陆频率
反编译的话,看到那一大坨东西之后感觉也没什么可做的了,不过大概知道了app传照片有那么多选项是因为针对这点做了实现

1 Like


对了via还有个让我觉得赏心悦目的小功能:可以让工具栏(和平板本身任务栏!)跟随网页颜色
你别说,新能源这个深蓝挺对我审美的

1 Like

所以你需要pwa么?需要我就加入下一滚动版本;不需要我就不做处理了。目前已经实现,需要我就发在下一版本中:

1 Like

好家伙这么快
虽然我其实打算自己尝试下适配via什么的,但是既然都实现了,那为什么不发呢

2 Likes

sure。不过我的新版本里面还有一些功能没测试,先不发major主版本,起个分支细说pwa问题好了

1 Like