游客发表
打开一个网页,整人突然满屏弹窗关不掉,代码或者鼠标不受控制地乱飞——这大概率是整人有人给你塞了一段JS整人代码。别急着骂人,代码先看看这些代码到底怎么写的整人。
最经典的代码玩法是弹窗轰炸。原理简单到离谱:while(true){ alert('你完了')}。整人浏览器执行到这一行,代码就会无限循环弹出对话框。整人用户点掉一个,代码下一个立刻出现,整人根本停不下来。代码不过现代浏览器早就加了“阻止此页面创建更多对话框”的整人机制,一般弹到第十几个就会自动拦截。代码想绕过?整人得用setInterval配合随机延迟,比如每800毫秒弹一次,浏览器反而不好判断。我试过在Chrome里跑,弹了二十多个才被掐掉,足够让对面抓狂半分钟。
更损的一招是禁用右键和F12。有人以为加个document.oncontextmenu = () => false就完事了,其实按F12照样能打开开发者工具。要玩就玩全套:监听keydown事件,检测e.key === 'F12'或者e.ctrlKey && e.shiftKey && e.key === 'I',直接e.preventDefault()。但别高兴太早——用户可以在浏览器菜单里手动打开控制台,或者干脆禁用JavaScript。所以这招只能欺负小白,遇到懂行的反而暴露自己。
鼠标乱飞那个效果,核心代码不到十行。监听mousemove,拿到e.clientX和e.clientY,然后给document.body设个transform: rotate(180deg)?太明显了。真正阴险的做法是反转坐标:window.scrollTo(-e.clientX, -e.clientY),页面会往反方向滚。或者更绝的,把cursor样式改成none,再动态生成一个div跟着鼠标跑,但故意偏移50像素。用户会觉得鼠标“飘”了,怎么都点不中按钮。我在公司内部测试时,有个同事对着屏幕戳了半分钟,最后直接拔了鼠标线。
还有一种不弹窗、不卡顿,但让人血压升高的——篡改页面文字。用document.querySelectorAll('p')遍历所有段落,把“的”全部替换成“得”,或者把“登录”改成“登出”。用户点“登出”按钮,结果触发了登录逻辑。更狠的是随机替换:text.replace(/好/g, '坏'),一篇正常文章读起来像得了失语症。这种整人方式隐蔽性强,对方可能半天才反应过来是代码搞鬼,而不是自己眼花。
不过得提醒一句:整人代码别乱发。往别人生产环境的页面里注入这种脚本,轻则被骂,重则算破坏计算机信息系统。自己本地开个about:blank,或者写个demo.html玩玩就行。想发给朋友?让他自己复制到控制台里跑——前提是他愿意。
最后送一段“温和版”整人代码,效果是页面每隔三秒自动滚动到顶部,但只持续五次:
let count = 0; const timer = setInterval(() => { window.scrollTo({ top: 0, behavior: 'smooth'}); if (++count === 5) clearInterval(timer); }, 3000); 复制到控制台回车,然后正常往下滚。三秒后页面自己弹回去,再滚,再弹。对方如果不知道代码存在,会以为键盘坏了。别问我是怎么知道的。
友情链接