是否可以强制复制受保护的 Google 文档?
Is it possible to force a copy of a protected Google doc?
Google 文档可以“锁定”页面,这样就无法从其文本中进行复制。这对我来说似乎是错误的;计算机复制和粘贴的能力不应该是内在的吗?我无法理解网页如何“超越”其权限并阻止我的计算机做一些完全自然的事情。看来,如果我能得到服务并显示文本,我应该能够复制它。
这个网页如何防止我的机器复制?
编辑:这不再有效
我发现他们是如何禁止复制的,所以我将我的评论变成了答案。
这是在页面上运行的阻止复制的脚本:
function rtcScript() {
document.oncontextmenu = null;
document.onselectstart = null;
document.onmousedown = null;
document.onclick = null;
document.oncopy = null;
document.oncut = null;
var elements = document.getElementsByTagName('*');
for (var i = 0; i < elements.length; i++) {
elements[i].oncontextmenu = null;
elements[i].onselectstart = null;
elements[i].onmousedown = null;
elements[i].oncopy = null;
elements[i].oncut = null;
}
function preventShareThis() {
document.getSelection = window.getSelection = function() {
return {isCollapsed: true};
}
}
var scripts = document.getElementsByTagName('script');
for (var i = 0; i < scripts.length; i++) {
if (scripts[i].src.indexOf('w.sharethis.com') > -1) {
preventShareThis();
}
}
if (typeof Tynt != 'undefined') {
Tynt = null;
}
}
rtcScript();
setInterval(rtcScript, 2000);
请注意,它将每个元素设置为不可复制、不可选择或不可剪切,以及禁用上下文菜单。通过禁用页面上的脚本可以轻松绕过这一点。请参阅 this question 以了解如何在 Chrome 上执行此操作。我自己对此进行了测试 - 如果您在查看锁定文档时通过该方法禁用 JavaScript,您可以立即开始选择和复制文本而不会出现任何问题。
以下是复制(或打印)受保护的 google sheet 值的方法。
注意:使用此技术,您可以从每个 sheet 复制单元格;复制 spreadsheet 文件本身是不可能的。保留格式,但不保留公式。
将URL改为:
https://docs.google.com/spreadsheets/u/1/d/***[document id]***/preview
文档 ID 是在 google sheet URL 中找到的随机字符串,通常长度为 40 到 45 个字符。
对于每个 sheet,键入 Ctrl+A,Ctrl+C
将单元格粘贴到另一个跨页中sheet。格式化
从 2018 年 5 月 10 日起,禁用 JavaScript 根本不会加载文档,将 'edit' 更改为 'preview' 也不再有效。
我发现如果您点击三个点并转到:
More Tools > Developer Tools 然后点击console,输入'document.body.innerText',它会将整个文档加载为一个文本文件,这样你就可以复制到你想要的内容了。
我尝试了其他选项,none 对我有用 - 然后,尝试下载网页并保存 link。从文档重新打开,然后我可以下载为 PDF。
在开发人员工具中禁用 javascript,右键单击该页面,单击 'print',将打印机的打印目标更改为 'save as pdf',然后就可以了。
Google 文档可以“锁定”页面,这样就无法从其文本中进行复制。这对我来说似乎是错误的;计算机复制和粘贴的能力不应该是内在的吗?我无法理解网页如何“超越”其权限并阻止我的计算机做一些完全自然的事情。看来,如果我能得到服务并显示文本,我应该能够复制它。
这个网页如何防止我的机器复制?
编辑:这不再有效
我发现他们是如何禁止复制的,所以我将我的评论变成了答案。
这是在页面上运行的阻止复制的脚本:
function rtcScript() {
document.oncontextmenu = null;
document.onselectstart = null;
document.onmousedown = null;
document.onclick = null;
document.oncopy = null;
document.oncut = null;
var elements = document.getElementsByTagName('*');
for (var i = 0; i < elements.length; i++) {
elements[i].oncontextmenu = null;
elements[i].onselectstart = null;
elements[i].onmousedown = null;
elements[i].oncopy = null;
elements[i].oncut = null;
}
function preventShareThis() {
document.getSelection = window.getSelection = function() {
return {isCollapsed: true};
}
}
var scripts = document.getElementsByTagName('script');
for (var i = 0; i < scripts.length; i++) {
if (scripts[i].src.indexOf('w.sharethis.com') > -1) {
preventShareThis();
}
}
if (typeof Tynt != 'undefined') {
Tynt = null;
}
}
rtcScript();
setInterval(rtcScript, 2000);
请注意,它将每个元素设置为不可复制、不可选择或不可剪切,以及禁用上下文菜单。通过禁用页面上的脚本可以轻松绕过这一点。请参阅 this question 以了解如何在 Chrome 上执行此操作。我自己对此进行了测试 - 如果您在查看锁定文档时通过该方法禁用 JavaScript,您可以立即开始选择和复制文本而不会出现任何问题。
以下是复制(或打印)受保护的 google sheet 值的方法。
注意:使用此技术,您可以从每个 sheet 复制单元格;复制 spreadsheet 文件本身是不可能的。保留格式,但不保留公式。
将URL改为:
https://docs.google.com/spreadsheets/u/1/d/***[document id]***/preview
文档 ID 是在 google sheet URL 中找到的随机字符串,通常长度为 40 到 45 个字符。
对于每个 sheet,键入 Ctrl+A,Ctrl+C
将单元格粘贴到另一个跨页中sheet。格式化
从 2018 年 5 月 10 日起,禁用 JavaScript 根本不会加载文档,将 'edit' 更改为 'preview' 也不再有效。
我发现如果您点击三个点并转到: More Tools > Developer Tools 然后点击console,输入'document.body.innerText',它会将整个文档加载为一个文本文件,这样你就可以复制到你想要的内容了。
我尝试了其他选项,none 对我有用 - 然后,尝试下载网页并保存 link。从文档重新打开,然后我可以下载为 PDF。
在开发人员工具中禁用 javascript,右键单击该页面,单击 'print',将打印机的打印目标更改为 'save as pdf',然后就可以了。