当前位置:首页 > 热点

网页禁止f12怎么破解

按F12弹出开发者工具,网页页面直接白屏或者跳转到某个警告页——这种事我上周就碰上了。禁止解一个做前端的网页朋友发来链接,说他们公司新上线的禁止解数据看板禁用了调试功能,问我能不能绕过去。网页我打开一看,禁止解好家伙,网页连右键菜单都给屏蔽了。禁止解

这种“禁止F12”的网页防护,本质上就是禁止解几行JavaScript代码在捣鬼。常见套路无非三种:监听keydown事件拦截F12和Ctrl+Shift+I、网页屏蔽contextmenu事件干掉右键、禁止解用debugger语句搞无限循环拖死调试器。网页听起来挺唬人,禁止解但说白了都是网页纸糊的墙。

直接关掉JavaScript

最粗暴的办法:浏览器设置里禁用JavaScript,刷新页面。那些防护代码全是JS写的,JS一关,它们集体哑火。页面可能排版乱一点,但内容该出来还是出来。Chrome的话,地址栏输chrome://settings/content/javascript,把当前站点加进阻止列表就行。

这招的缺点是有些网站离了JS根本没法用,比如依赖前端渲染的单页应用。但对付大多数“禁止F12”的页面,够用了。

从控制台反制

如果不想关JS,还有个更取巧的路子。打开开发者工具之前,先新建一个空白标签页,在空白页里按F12打开控制台,然后再把目标网址粘贴进去回车。这时候控制台已经挂载在当前标签页上了,目标页面的JS再怎么监听keydown也拦不住你——因为工具早就开好了。

我试过好几个号称“禁止调试”的站点,这招百试百灵。原理很简单:那些防护代码只在页面加载后生效,而你在加载前就已经把调试器准备好了。

对付debugger死循环

有些页面更狠,检测到开发者工具打开就执行debugger语句,让你不停断点,根本没法操作。遇到这种,在开发者工具的Sources面板里找到对应脚本,右键选择“Never pause here”,或者直接在Console里输入Function.prototype.constructor = function(){ }把构造函数废掉。

还有个笨办法但很有效:在Chrome启动参数里加--disable-debugger,不过这对普通用户来说太折腾了。

右键菜单和复制限制

屏蔽右键的代码就一行document.oncontextmenu = function(){ return false}。在Console里敲document.oncontextmenu = null,右键立马恢复。有些网站还会监听copy事件往剪贴板里塞版权信息,同样用document.oncopy = null解决。

说实话,这些防护手段在真正需要的人面前形同虚设。前端代码跑在用户的浏览器里,用户就有绝对控制权。所谓“禁止F12”,顶多是给普通用户添点麻烦,防不住任何有心人。

一个真实的案例

去年有个在线考试系统,声称“禁止切换窗口、禁止调试、禁止复制”。我好奇试了试,发现它用visibilitychange事件检测切屏,用debugger防调试。结果呢?在Console里执行Object.defineProperty(document, 'visibilityState', { get: () => 'visible'}),切屏检测直接失效。debugger更简单,Sources面板里一键忽略。

这类防护的尴尬在于:写代码的人以为能挡住用户,实际上只是给自己加了点工作量。真正该保护的数据,从来不该依赖前端做安全。

所以下次再碰到“禁止F12”的页面,别急着骂娘。打开Console,该干嘛干嘛。浏览器是你的,代码也是在你机器上跑的,主动权从来都在你手里。

分享到: