|
你右键点下去,防复菜单没弹出来。网页选中一段文字,破解Ctrl+C按了跟没按一样。防复打开开发者工具想复制DOM节点,网页发现代码全被塞进了一个看不懂的破解加密脚本里。这不是防复电脑坏了,是网页网页在防你。 防复制的破解手段就那么几层。最粗糙的防复是CSS的user-select: none,浏览器直接不让你选中文字。网页稍微讲究点的破解会监听copy和contextmenu事件,e.preventDefault()一挂,防复右键和复制全废。网页再狠一点,破解用JavaScript把整个页面的文字转成图片,或者每隔几百毫秒往剪贴板里塞一段版权声明——你复制走的永远是“本文受版权保护”而不是正文。 这些招数听起来唬人,但本质上都在浏览器里跑。浏览器是用户的浏览器,不是网站的浏览器。这是破解的底层逻辑。 最直接的办法:打开开发者工具,切到Console面板,输入document.body.style.userSelect='auto',回车。CSS限制没了。再输入document.oncopy=null; document.oncontextmenu=null; document.onselectstart=null,事件监听全清掉。现在你再试试右键和复制。大部分网站到这一步就缴械了。 有些页面把内容藏在iframe里,或者用Shadow DOM封装。Console里先找到对应的iframe,用document.querySelector('iframe').contentDocument.body.style.userSelect='auto'处理。Shadow DOM麻烦一点,但Chrome的Elements面板里能直接展开shadow-root,手动删掉里面的样式覆盖就行。 遇到那种把文字转成图片的,比如某些小说网站和文档分享平台。截图OCR是最笨但最可靠的路子。微信截图自带文字提取,QQ截图也有,准确率对付中文正文够用了。如果图片量大,用PaddleOCR或者Tesseract批量跑一遍,比手动敲快得多。 还有一种恶心人的做法:页面监听selectionchange事件,你刚选中文字,它就把选区清空或者替换成乱码。对付这个,在Console里执行document.removeEventListener('selectionchange', handler)不一定管用,因为handler引用拿不到。更实际的做法是直接禁用JavaScript——在浏览器设置里关掉JS,页面样式可能崩,但文字通常还在。或者用Readability类工具,比如Firefox的阅读模式,它会把正文提取出来重新渲染,绕过所有防复制脚本。 我遇到过最极端的一个站点,把文字拆成单个字符,用CSS绝对定位随机散布在页面上,每个字符还带旋转和偏移。复制出来是一堆乱序字母。这种就得靠脚本了:遍历所有文本节点,按DOM顺序拼接,再用innerText输出。Console里几行代码的事,但不知道原理的人能折腾半小时。 说句实在话,防复制这件事在技术上就是个纸糊的墙。网站真正防的是普通用户,不是存心要拿内容的人。对普通用户来说,关掉JS或者用阅读模式就够了。对开发者来说,Console里那几行代码是基本功。真正值得讨论的不是怎么破,而是为什么破——你复制一段文字是为了引用、存档还是转载,这决定了你该不该破。 最后提一句:破解防复制用于个人学习、研究、无障碍阅读,没毛病。批量抓取别人付费内容再分发,那是另一回事。技术本身不带立场,用技术的人带。 |