前端如何在不引入库的情况下判断用户打开了 F12 控制台

241 天前
 TaoLoading

有个需求需要在不引入库的情况下判断用户打开了 F12 控制台,而且要做到多浏览器兼容,大佬们有合适的办法吗

2850 次点击
所在节点    前端开发
28 条回复
drymonfidelia
240 天前
@drymonfidelia cookies 的风控标记会在下一个请求被风控系统识别入库,防止单独请求被用户注意到
drymonfidelia
240 天前
@Chad0000 cloudflare 也在用这种方法写风控标记 turnslite 验证码如果开了控制台 100%不给通过
bug51
240 天前
@jqtmviyu 容易把自己干死 无限 debugger
TaoLoading
239 天前
@drymonfidelia #20 我试了下新版 chrome 已经不好使了,你那新版 chrome 可以?
TaoLoading
232 天前
@drymonfidelia #21 你那边 toString() 方法在新版 chrome 好使不,我这测的不行呢
drymonfidelia
232 天前
@TaoLoading 新版 chrome 确实不好使了,firefox 还可以稳定用,不过我们还有别的方法判断,不好公开
TaoLoading
232 天前
@drymonfidelia #26 ok ,我试了下可以通过打印大对象数组并计算时间差的方式来判断是否打开了 devtools ,亲测可行
bronana
224 天前
最近在一个盗版资源网站上看到的源码
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
</head>
<body>
<script>
/*防扒*/
(function () {
var callbacks = [],
timeLimit = 50,
open = false;
setInterval(loop, 1);
return {
addListener: function (fn) {
callbacks.push(fn);
},
cancleListenr: function (fn) {
callbacks = callbacks.filter(function (v) {
return v !== fn;
});
},
};

function loop() {
var startTime = new Date();
debugger;
if (new Date() - startTime > timeLimit) {
if (!open) {
callbacks.forEach(function (fn) {
fn.call(null);
});
}
open = true;
window.stop();
alert('小黑子,露出鸡脚了吧');
window.location.reload();
} else {
open = false;
}
}
})().addListener(function () {
window.location.reload();
});
</script>
</body>
</html>

```

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

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

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

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

© 2021 V2EX