如何使用 js 检测控制台被用户打开了_right click menu 如何使用 js 检测控制台被用户打开了



如何使用 js 检测控制台被用户打开了

js

solutions

  1. 监听 F12 事件


  1. 监听键盘快捷键组合

如何使用 js 检测控制台被用户打开了_sed_02

Ctrl + Shift + I

Option + Command + I



如何使用 js 检测控制台被用户打开了_监控_03

  1. Object.toString()

如果控制台输出的是对象,则保留对象的引用,每次打开开发者工具的时候都会重新调用一下对象的 toString()方法将返回结果打印到控制台(console tab)上。



  1. 监听 window 的纵横比的变化


  1. debugger 断点
"use strict";

/**
*
* @author xgqfrms
* @license MIT
* @copyright xgqfrms
* @created 2020-10-01
* @modified
*
* @description
* @difficulty Easy Medium Hard
* @complexity O(n)
* @augments
* @example
* @link
* @solutions
*
* @best_solutions
*
*/

// const log = console.log;

function FBIWarning() {
console.warn(`控制台被打开了`);
console.error(`控制台被打开了`);
}

// ??? !function
!function () {
const id = setInterval(() => {
const before = new Date().getTime();
debugger;
const after = new Date().getTime();
if (Math.abs(after - before) > 100) {
FBIWarning();
clearInterval(id)
}
}, 1000);
}();


  1. Proxy 拦截 log 执行


  1. 数据劫持

"use strict";

/**
*
* @author xgqfrms
* @license MIT
* @copyright xgqfrms
* @created 2020-10-01
* @modified
*
* @description
* @difficulty Easy Medium Hard
* @complexity O(n)
* @augments
* @example
* @link
* @solutions
*
* @best_solutions
*
*/

// const log = console.log;

let times = 1;

var abc = document.createElement('div');

Object.defineProperty(abc, `id`, {
// 数据劫持
get: function () {
// console.log(`控制台被打开了`, x);
console.warn(`控制台被打开了`, times);
console.error(`控制台被打开了`, times);
times++;
},
// others
});

console.log(abc);



如何使用 js 检测控制台被用户打开了_right click menu

应用场景

禁用右键菜单

防止执行外包的 js, 关闭当前页面

重定向

禁用复制

refs

​https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent​

快捷键

​https://www.cnblogs.com/xgqfrms/tag/快捷键/​


let isCtrl = false;
document.addEventListener("keyup", () => {
//
});
document.addEventListener("keyup", function(e) {
let key = e.which || e.keyCode;
// console.log(`keyup & e =`, e);
// console.log(`e.keyCode =`, e.keyCode);
// console.log(`e.which =`, e.keyCode);
// console.log(`key =`, key);
if(e.which === 17) {
// init
isCtrl = false;
}
});
document.addEventListener("keydown", function(e) {
let key = e.which || e.keyCode;
console.log(`keydown & e =`, e);
// console.log(`e.keyCode =`, e.keyCode);
// console.log(`e.which =`, e.keyCode);
// console.log(`key =`, key);
if(e.which === 17) {
isCtrl = true;
}
if(e.which === 83 && isCtrl === true) {
console.log(`you pressed Ctrl + S`);
}
if(e.which === 68 && isCtrl === true) {
console.log(`you pressed Ctrl + D`);
}
if(e.which === 70 && isCtrl === true) {
console.log(`you pressed Ctrl + F`);
}
if(e.which === 88 && isCtrl === true) {
console.log(`you pressed Ctrl + X`);
}
});
// document.onkeyup = function(e) {
// if(e.which === 17) {
// isCtrl = false;
// }
// }
// document.onkeydown = function(e) {
// if(e.which === 17) {
// isCtrl = true;
// }
// if(e.which === 83 && isCtrl === true) {
// // alert('Keyboard shortcuts are cool!');
// return false;
// }
// }