我们如何限制用户保存网页?

时间:2009-03-05 18:30:09

标签: drm restriction

我们如何限制用户保存页面?

请提供一些禁用文件的提示 - >保存和查看来源选项

编辑:显然无法完成,也许不应该尝试。但是在这个问题上可能有一个更有趣的变体是我们如何才能让用户足够难以以可用的格式保存页面,这样他们这样做是不值得的呢?这个问题并没有带来任何价值,但是我们说我们正在保护一个文章订阅网站,用户每年只需支付几百美元就可以继续访问文本。

11 个答案:

答案 0 :(得分:54)

由于页面已发送到客户端,因此始终有办法获取该信息。试图阻止用户这样做只会让他们感到沮丧。

让用户无法保存文件的唯一方法是不将其发送给他们。

答案 1 :(得分:14)

虽然最好的答案是“不要这样做”,但有一些方法可以让它们变得更加困难。而且,由于这个网站的重点实际上是回答问题,即使它很糟糕,这是最好的方法:

首先,您需要在新窗口中打开页面,关闭地址栏和工具栏以及其他所有内容。这将使用户无法轻易进入“文件”菜单。为此,您需要一个用户加载的“启动”页面,然后当他们点击链接时,它会打开提供页面主要内容的弹出窗口。有关如何在没有工具栏等内容的情况下创建弹出窗口的详细信息如下: http://blazonry.com/javascript/windows.php

然后,您需要向每个页面添加一些javascript,以防止用户右键单击。这是一种方法: http://javascript.about.com/library/blnoright.htm

最后,如果您不希望看到它是您的Javascript代码,那么混淆代码是一种非常有效的方法。他们仍然可以看到代码,如果他们有很多技术诀窍,但混淆代码将是一个巨大的痛苦实际解释。那里有很多混淆器;这是一个免费的基于网络的: http://www.javascriptobfuscator.com/

这远非万无一失。它将阻止所有“随意”用户,但任何高级用户都可能能够轻松找到解决方法。如果这个想法至少可以阻止绝大部分,那么这应该足够了。

更新更新的问题: 为了解决您的新扩展问题,我想说实现您所说的最佳方法是使用支持DRM的格式。 Adobe Acrobat可能是最好的选择,因为几乎每个人都安装了阅读器。您可以阻止将PDF文件保存到计算机,以便只能由登录用户从网页加载它们。用户仍然可以对文档本身进行屏幕捕获,我认为这是不可预防的(除非Adobe Reader为此提供了一些安全措施,但他们可能会这样做)但是对于大多数用途来说它应该是足够的安全性。

答案 2 :(得分:9)

不要这样做。

说真的,如果用户可以在他们的浏览器中看到该页面,他们可以看到源代码和/或将其保存到他们的计算机上。

你在这里正在打一场失败的战斗。

答案 3 :(得分:4)

浏览器的缓存怎么样?它可以从那里保存。

打印屏幕怎么样?这也可以保存页面。

防止用户保存某些内容的唯一方法是首先不向他们展示。

答案 4 :(得分:4)

尝试在html中执行此操作实际上是浪费时间和资源,因为您使用的任何方法都可以被轻易绕过。

相反,我会使用其他技术来显示数据 - 你永远无法绕过屏幕截图。但是,如果您要显示文本,并且您希望使用它来保存该文本以供在其他地方使用,那么可能的选项包括

  1. PDF - 可以禁用保存和打印。大多数流行的网络语言都有扩展,可以动态编写pdf。事实上,您可能只需使用Adobe下载DRM路线并嵌入文档

  2. Flash - 最有可能通过Flex,可用于编写通用应用程序来显示文本和图像。 Flash的优势在于它比pdf更容易设置链接。

  3. 或其他内容,自定义Java小程序,甚至是vrml插件,并以3D形式显示文本!

  4. 在所有情况下,您都可以针对破坏性背景显示文本,以使OCR更加困难,并且图像可以加水印。然而,没有任何东西可以阻止一个坚定而资源丰富的观众,尽管你可能足够努力使它不值得花时间。

答案 5 :(得分:2)

您可以做的最少...内容是由Javascript动态生成的。这样,他们就不能简单地保存它。当然,在FX中,他们仍然可以查看生成的代码然后复制和粘贴。但是,通常人们无法保存页面。

答案 6 :(得分:1)

这不应该是一个问题,但如果你真的不希望用户出于某种原因看到你的代码(javascript,css或html),那么你可能会使用一些混淆工具来降低代码的可读性。

答案 7 :(得分:1)

尝试javascript“编码”和混淆。

这样的东西
if(document.location == 'mydomain.com') {
  content = getAjax('mycontent.xml');
  // content will hold something like 72, 94, 81, 99, ... - encoded ASCII codes
  document.write(String.fromCharCode(content));
}

总是可以保存页面,但对于非技术人员来说,要使其工作起来会更困难。 有2个保护

  • 域名
  • 转换ASCII

这只是伪代码,但我认为你明白了。

答案 8 :(得分:0)

我想再添加一个方法,imho,很难规避:Ctrl + S! (对我来说,Apple + S)

答案 9 :(得分:0)

  

我们怎样才能让用户足够难以以可用的格式保存页面,这样他们这样做是不值得的

没什么难的:在每一页都添加:“John Stealer,Zetabeta公司的个人财产,用信用卡支付756890987654,账单地址......,订阅到期12/20”。

这是我刚刚发明的“扩展文本格式”...它具有惊人的属性:虽然它看起来像普通文本,但用户不太愿意将其打印出来并赠送给其他人......

答案 10 :(得分:0)

将它们添加到脚本标签中的代码集中

document.addEventListener('contextmenu', function (e) {
                e.preventDefault();
});

document.onkeydown = function (e) {
                return false;
};