JS 有办法检测当前页面是否有油猴脚本注入吗?接了个在线考试系统外包,客户要求是这样。

2023-02-18 23:08:10 +08:00
 edis0n0
4410 次点击
所在节点    程序员
19 条回复
echo314
2023-02-18 23:13:59 +08:00
canvas 显示可否?
i0error
2023-02-18 23:14:36 +08:00
您好,这是必应。😊

根据网络搜索结果¹²³,JS 有办法检测当前页面是否有油猴脚本注入。一种方法是使用 window.GM_info 对象,它是油猴脚本的元数据,可以获取脚本的名称、版本、描述等信息。如果该对象存在,则说明当前页面有油猴脚本注入。另一种方法是使用 document.scripts 集合,它包含了页面上所有的 script 标签,可以遍历它们并检查它们的 src 属性是否包含 tampermonkey.netgreasespot.net 等油猴脚本的域名。如果找到了,则说明当前页面有油猴脚本注入。

源: 与必应的对话,2023/2/18(1) Tampermonkey 油猴 js hook 教程_pylemon 的博客-CSDN .... https://blog.csdn.net/qq_27648991/article/details/107749532 访问时间 2023/2/18.
(2) [油猴脚本开发指南]脚本往页面上添加新元素_李恒道的博客 .... https://blog.csdn.net/lihengdao666/article/details/113064736 访问时间 2023/2/18.
(3) [javascript] 油猴脚本开发整理_业火之理的博客-CSDN 博客. https://blog.csdn.net/yehuozhili/article/details/113727385 访问时间 2023/2/18.




当然可以。😊

根据网络搜索结果¹²³,以下是两种检测油猴脚本的示例代码:

- 使用 window.GM_info 对象:

```javascript
// ==UserScript==
// @name 检测油猴脚本
// @namespace test
// @version 1.0
// @description 检测当前页面是否有油猴脚本注入
// @match *://*/*
// ==/UserScript==

(function() {
'use strict';

// 如果 window.GM_info 对象存在,则说明有油猴脚本注入
if (window.GM_info) {
console.log("当前页面有油猴脚本注入");
// 打印出所有的油猴脚本的名称和版本
for (let script of window.GM_info.script) {
console.log(script.name + " " + script.version);
}
} else {
console.log("当前页面没有油猴脚本注入");
}
})();
```

- 使用 document.scripts 集合:

```javascript
// ==UserScript==
// @name 检测油猴脚本
// @namespace test
// @version 1.0
// @description 检测当前页面是否有油猴脚本注入
// @match *://*/*
// ==/UserScript==

(function() {
'use strict';

// 定义一个数组,包含了常见的油猴脚本的域名
let domains = ["tampermonkey.net", "greasespot.net", "userscripts.org", "greasyfork.org"];

// 遍历所有的 script 标签,检查它们的 src 属性是否包含上述域名之一
for (let script of document.scripts) {
let src = script.src;
if (src) {
for (let domain of domains) {
if (src.includes(domain)) {
// 如果找到了,则说明有油猴脚本注入,并打印出该 script 标签的内容和 src 属性值
console.log("当前页面有油猴脚本注入");
console.log(script);
console.log(src);
break;
}
}
}
}
})();
```

源: 与必应的对话,2023/2/18(1) Tampermonkey 油猴 js hook 教程_pylemon 的博客-CSDN .... https://blog.csdn.net/qq_27648991/article/details/107749532 访问时间 2023/2/18.
(2) 油猴 Safari 浏览器插件:Tampermonkey 脚本插件 - 掘金. https://juejin.cn/post/7200196102968901690 访问时间 2023/2/18.
(3) 如何开发一个油猴脚本- 从零开始编写一个油猴脚本_mukes 的 .... https://blog.csdn.net/mukes/article/details/109727662 访问时间 2023/2/18.
i0error
2023-02-18 23:15:08 +08:00
以上内容来自 Bing ,未验证
liyang5945
2023-02-18 23:16:14 +08:00
在线考试系统就不可靠,我猜你们是要禁止文字复制啥的吧,浏览器打开控制台想干什么都可以,我见过有考试客户端是用 electron 套个壳,能防住大部分人了
i0error
2023-02-18 23:16:16 +08:00
看起来是在一本正经胡说八道,忽略。
renmu
2023-02-18 23:16:20 +08:00
然后反手就把你检测注入的代码干掉了,当然能不能检测到是一回事。
XiLingHost
2023-02-18 23:25:36 +08:00
试试直接用 wasm 绘制界面
比如这样 https://www.egui.rs/#demo
基本上 js 的注入是没用的
Micropaper
2023-02-18 23:29:02 +08:00
一个简单的办法是挟持 console.log ,然后便利内容中是否包含 chrome-extension://xxxx 。不过这个可能需要你研究一下油猴的 xx 有什么特征,当然你也可以只要检测到 chrome-extension:// 就提示用户必须禁掉所有插件再使用你的考试系统,不管他有没有安装油猴。
laqow
2023-02-19 00:36:33 +08:00
electron 打个包多好,为什么要干涉别人的浏览器
Pastsong
2023-02-19 00:37:50 +08:00
@i0error V2EX 禁止 ChatGPT 回复 小心被封号
IvanLi127
2023-02-19 02:39:38 +08:00
有没有一种可能,油猴脚本先下手把你检测代码吃掉
learningman
2023-02-19 03:35:36 +08:00
@IvanLi127 那就一起放 wasm 里,一部分检测一部分逻辑,这样没法屏蔽
FFFFourwood
2023-02-19 08:36:43 +08:00
我就是做考试系统的、网页版不能能防作弊,
得 electron 套壳客户端
断网清后台
只留部分白名单
摄像头 ai 作弊检测
等等

考试途中把电脑关机重启
开机之后依旧是考试界面
muzuiget
2023-02-19 10:59:55 +08:00
不行,代码从服务器传到浏览器,怎么运行是浏览器的事了,有足够耐性,始终能逆向出来。

除非类似视频 DRM ,数据直送硬件层面解密处理,否则没戏。
zhlxsh
2023-02-19 11:16:07 +08:00
@FFFFourwood 13# 这句话是什么意思?
考试途中把电脑关机重启
开机之后依旧是考试界面
bagel
2023-02-19 11:48:06 +08:00
HuskyYellow
2023-02-19 13:57:15 +08:00
@FFFFourwood 这种方式有一个办法能跳过去,就是局域网投屏。我之前帮朋友作弊过,也是你这种方式的考试系统。
MMMMMMMMMMMMMMMM
2023-02-19 18:23:01 +08:00
摄像头,AI 识别物体
临考简单的发布一个规则,如:画面里必须用纸写上他的名字、日期 or something ,背景必须放盆花之类的...
作弊成本是很高的,有这技术真没必要赚这个钱,监考只需要找个现成的 AI 物体识别解决方案就行了
iPc666
2023-02-19 19:25:46 +08:00
单纯用 js 没法检测的到。油猴脚本是在沙箱里的。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/917250

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX