受疫情影响,现在基本都是远程上课,眼看学期末就要到了,各个课程也纷纷结课。往常的结课考试,自然也就行不通,所以大部分课程开始改为递交课程报告的形式。于是乎,现在天天就是看论文,找资料,写报告……头都大了!特别有时候,好不容易在网上找到一些资料,结果还不让我使用传统的 Crtl C+V 大法,有的是让你登录,更狠的直接给你禁了,你都找不到这个选项。现在版权意识越来越重,要说不让随意下载转发,尚还接受,可是,有时候我就想用一下那么几句话,亦或者做下阅读笔记,还得一字一句的打,效率太低了。然后,就开始了各种捣鼓,这里总结出了所有我知道的办法,欢迎评论补充!
写在前面
介绍具体破解方法前,我们还是有必要先弄清楚这种「复制禁用」到底是怎么实现的,只有知其然亦知其所以然,才能不变应万变;(如果你只是简单的想找个破解方法,可以跳过此章节)
目前,绝大多数网页禁用复制功能,都可以囊括到如下三类:
1)JavaScript 脚本的方式:
也是目前最常用的方式,常用的实现方式如下:
1 | // 禁止右键菜单 |
使用 CSS 能够保证在用户禁用 JavaScript 脚本的情况下,复制功能也会被禁止;
1 | body { |
3)HTML 属性的方式:
这种方式就用的不多了;
1 | <body oncopy="return false" oncut="return false;" onselectstart="return false" > |
最后,还必须提一下,有些爱捣鼓的网站(很少很少)会想办法禁用开发者模式,但是这种禁用通常是不可能 100% 禁用的;
有的只是单纯通过禁用 F12 按键,又或者高级一些的:
“利用 console.log 打印一个对象然后覆盖这个对象的 toString 方法,一旦开发者工具存在,toString 方法就会被调用。”
基础方法
首先最简单最笨的办法,当然就是,百度搜索这篇文章,看看有没有别的地方可以直接复制或者下载的。这不符合本文主题,pass!
利用网页打印
这里说的打印,不是让你真的打印(当然,不嫌麻烦话当我没说);
具体做法就是:
- 在文档上:右键 -> 打印
- 然后,就可以直接在弹出的打印预览页面的,愉快的复制粘贴了;
拖拽法
选中所需要的文字,鼠标点击拖入到文本文件中;
查看源码
F12 进入开发者模式,在 hmtl 源码里就可以找到你所需要的文字;
这种方法很明显有个弊端就是,我们复制的文字量比较大时,会复制到一些不必要的 <p>
、<div>
这种标签,这就需要自己去手动修改了,比较麻烦;
进阶
前面我们知道了,网站禁用复制的实现原理,那么,只需要按照对应的原理进行破解就 OK 了;
$=0 命令
许多网站在复制时会弹窗,提示让你登录,或者其它信息,这些网站通常是让你复制时触发 js 代码实现;
而在 js 中,由于受到 prototype.js(老外写的框架,用于将一些常用的函数封装,方便操作)的影响,现在很多人都用 $
来表示一个查找对象的函数,于是也就有了命令: $=0
,这样就能破坏 js 代码的执行;
具体操作:
- F12 进入开发者模式,点击 Console;
- 输入:
$=0
,回车执行,再返回去复制即可;
禁用 js 代码
上面提到的办法,不能保证 100% 的让 js 失效,所以接下来,我们直接设置禁用 js 代码;
以 Google 浏览器为例(其它浏览器大同小异):
- 进入 设置 -> 隐私设置和安全性 -> 网站设置 -> JavaScript
- 将 允许 关闭,或者,将文档那个网站加入到禁止名单即可;
- 回去,刷新网站,就可以复制了;
使用完后,别忘了将设置还原!
其他
如果,你尝试完上述所有方法依旧不管用,那就是我们之前提到过得,网站使用了 user-select: none;
设置 css 样式进而停用用户选择,它是不受 js 影响的。所以,此方法处理起来比较复杂;
通常,F12 进入开发者模式,进入 Elements 选项卡,然后取消选中 body 下面的 CSS 规则:
- 具体规则见前文:规则查看
- 主要是:
user-select: none;
和webkit-user-select:none;
或者说,可以使用用户脚本来覆盖设置(方法来源):
1 | // ==UserScript== |
- 如果启用此功能,则将适用于每个页面,这在所有情况下都不是理想的;
- 因此,可以使用 Violentmonkey,Tampermonkey 或 Greasemonkey 之类的用户脚本管理器来安装脚本,并轻松打开/关闭该脚本;
补充
如果你能熟练掌握上述所有方法,那么基本所有的文档都能任由你复制了;
但是,如果还非要说上面那些方法不会使用,想要更加轻松的方式,那就直接使用第三方插件吧!
推荐几款谷歌插件:
- 『Enable Copy』:安装完后会在 chrome 插件栏上增加一个对勾形状按钮,以后碰到不能直接复制的网页,每次复制网页内容之前,先点此勾形按钮即可;
- 『simple allow copy』:使用方法,和 Enable Copy 基本相同;
再就是前面提到过的脚本管理器:『Tampermonkey』
- 你可以用该脚本管理器添加,前面提及的脚本,也可以自己在上面查找一些相关脚本;
- 再提供一款脚本『网页限制解除(改)』供选择;
最后,送佛送到西,再安利一个文档下载器:
- 『冰点文库下载器』:可以解决常见的像百度文库这种,大部分的文档下载;
最最最后,只要不嫌麻烦,包治百病的终极大法:
- 截图 + 文字识别
- 至于这两个工具,直接百度,那就是一大堆了;
那就再附加一个,网页内容选择性打印的脚本:
1 | // 找到你所需要打印的部分的 div,这里是利用 ID 识别 |