当遇到一个网站想要打开控制台调试的时候,却发现点击F12之后,页面就进行了跳转,导致我们没法打开控制台。
导致页面无法打开的代码如下:(注意: 该代码仅在chrome下有效)
(() => {
var t = 0;
var e = new Date;
e.toString = function() {
if (++t > 1) {
window.location.href = "www.baidu.com";
}
}
console.log(e);
})()
原理: 为什么这段代码就能在控制台打开时就跳转到其他页面?
当第一次代码加载的时候,t + 1 === 1, 所以页面不会跳转。
由于e对象被console.log引用, 所以e对象不会被释放。
当打开控制台时,e.toString被再次执行,t = 2, 页面跳转代码执行。
经过尝试,找到了两种破解方法:
破解方法很简单,只要用到浏览器书签栏,万能的书签不仅可以存储链接,还可以执行 JS 代码。
新建一个新的书签,把js语句写到书签内容中就行。
- 通过清空
console语句
javascript:console.clear();
- 通过监听
beforeunload事件
window.addEventListener(
'beforeunload',
function (e) {
e.preventDefault();e.returnValue = ''
});
通过监听 beforeunload 事件并指定 returnValue,这样当我们打开控制台时,浏览器会在网页跳转前询问是否离开此网页,点击取消即可留在当前页面了。
新建书签的办法:
- 点击浏览器右上角的三点-点击书签-点击书签管理器
- 点击书签页右上角的三点, 再点击添加新书签
- 将语句放到网址里面,点击保存即可