打开一个网页,想复制一段文字,按Ctrl+C没反应,右键菜单弹出来却是“禁止复制”。看到一张好图,右键“图片另存为”是灰色的,或者点下去没动静。这种事经常碰到,尤其在一些小说网站、图片社区、文库或者新闻站点。它们用了一些前端手段来防止你保存内容。别急,这些限制基本都在浏览器层面,绕过去的方法不少。
网站通常怎么做的?最常见的是用JavaScript监听右键事件,`document.oncontextmenu = function(){return false;}`,或者监听`copy`、`cut`、`selectstart`事件,直接阻止默认行为。还有用CSS的`user-select: none`,让文字根本选不中。图片方面,有的把图片设为背景图,右键另存为就抓不到;有的用透明div盖在图片上,你右键点到的其实是那个div;更狠的用Canvas画图,或者把图片切成很多小块拼起来。还有的网站会检测你是否打开了开发者工具,一旦发现就弹出警告或者直接关闭页面。
知道了原理,破解就简单了。
先试试最省事的:禁用JavaScript。在Chrome里,点右上角三个点,设置,隐私和安全,网站设置,JavaScript,把“允许”改成“不允许”。然后刷新页面。很多网站的文字就能直接选中复制了,右键菜单也回来了。但注意,有些网站依赖JS加载内容,禁用后可能显示不全。你可以临时禁用,复制完再打开。或者用开发者工具:按F12,点右上角三个点,More tools,Sensors,或者直接在Console里输入`document.oncontextmenu = null; document.onselectstart = null; document.oncopy = null;`回车。这招对大部分JS限制有效。如果网站用了`debugger`防调试,可以在Sources面板里点“Deactivate breakpoints”按钮,或者右键行号选择“Never pause here”。
如果文字还是选不中,可能是CSS的`user-select: none`。在开发者工具的Elements面板,找到对应的元素,在Styles里把`user-select: none`前面的勾去掉,或者改成`text`。也可以直接在Console里执行`document.body.style.userSelect = ''text'';`。有时候网站会把文字放在伪元素里,或者用图片代替文字,那就得另想办法。比如用OCR工具,天若OCR、微信截图、QQ截图都带文字识别,截个图就能提取文字。

对于图片,右键被禁了,可以打开开发者工具的Network面板,刷新页面,然后按类型筛选Img,找到你要的图片,点开就能看到完整URL,右键Open in new tab,再另存为。如果图片是背景图,在Elements面板找到那个元素,看Styles里的`background-image`属性,里面就有URL。如果是Canvas画的,可以右键Canvas,选择“Copy image”或者用`canvas.toDataURL()`导出。实在不行,直接截图,现在截图工具都带OCR,截完直接提取文字。另外,查看网页源代码(Ctrl+U)也能找到很多图片链接,直接搜索`
还有个万能方法:打印成PDF。按Ctrl+P,在打印预览里,很多网站会去掉复制限制,你可以直接选中文字复制,或者选择“另存为PDF”,把整个页面保存下来。PDF里的文字和图片都能提取。不过有些网站会专门针对打印做限制,比如打印出来是空白,那就得换方法。可以试试在打印预览的页面里,用开发者工具把打印样式表删掉,或者用`@media print`相关的CSS覆盖。
浏览器自带的阅读模式也很好用。Chrome在地址栏右边有个“进入阅读模式”的图标,Edge也有。点一下,页面会变成纯文本,复制粘贴毫无压力。如果没看到图标,可以在地址栏输入`read://`加上网址试试。手机上的浏览器比如Safari、Chrome也有阅读模式,或者用“复制链接”到电脑上打开。有些App内的网页限制更严,可以试试用系统分享功能里的“在浏览器中打开”,往往能绕过。
如果以上都嫌麻烦,可以装个油猴脚本(Tampermonkey),然后去GreasyFork上搜“解除复制限制”或者“Allow Copy”,有很多现成的脚本,装上就能一键破解。注意别装来路不明的脚本,免得有安全风险。另外,在线工具如12ft.io可以帮你绕过一些付费墙和复制限制,但也不是万能的。还有网页缓存,比如百度快照、Wayback Machine,打开缓存页面往往没有限制。
最后说一句,这些技巧用来复制自己需要的资料、做笔记、学习研究没问题,但别拿去干侵权的事。网站加限制也是为了保护内容,咱们心里得有数。如果实在需要引用,可以联系作者获取授权,或者只引用一小部分并注明出处。
好了,下次再遇到不能复制和另存的网页,别急着关,按上面的方法挨个试,总有一个能成。