如何防止从我的网页复制文本?

时间:2011-08-26 15:13:59

标签: javascript

我正在尝试编写一个在线编程测验应用程序。因此,许多问题可能会像“以下代码的输出是什么?”。

用户可能只是复制粘贴整个代码并尝试在另一个窗口中运行它。有什么好办法可以阻止这个吗?我知道我们可以禁用右键单击和Ctrl-C,但还有更优雅的方法吗?更好的是,应用程序是否有办法知道用户正在尝试复制内容,并告知用户不允许这样做?

(标记javascript只是因为我不知道该标记为什么。如果您能想到某些内容,请重新选择更有意义的内容)

9 个答案:

答案 0 :(得分:6)

防止这种情况的最好方法是根本没有代码。任何类型的js都不会阻止任何人(特别是编码员)。我见过的最好的选择是使用图像。

答案 1 :(得分:2)

要真正防止任何文字篡改,您可以将代码段转换为图片并发布给用户阅读和解释。

图像解决方案仍然可以使用OCR应用程序解释图像,但使用OCR比简单复制和粘贴要复杂得多。

答案 2 :(得分:2)

这是在线世界中一直存在的问题。防止复制实际上相当困难。您可以使用Javascript来禁用右键单击和Ctrl-C,但有很多方法可以解决这个问题。一种方法可能是将问题放在图形中,而不是文本中。用户仍然可以下载图片,但对他们来说不太有用。

答案 3 :(得分:1)

我认为这不能用javascript完成...如果你能阻止一个正确的cick,你就不能阻止用户使用curl并在源代码中显示......

最好的解决方案可能是渲染代码服务器的图像......或者因此使用闪存。

答案 4 :(得分:1)

如果您不希望用户复制和粘贴代码,请使用GD等库将其渲染为图像并显示此图像。

答案 5 :(得分:1)

实际上,处理此问题的最佳方法是disable text selection,但是虽然这会阻止90%的用户,但是一个坚定的用户可以使用像Firebug这样简单的东西来摧毁你。如果他们正在查看代码,他们很有可能很容易处理这个问题。

如果您使用实时文字,则没有100%的解决方案。另一方面,您可以使用图像或SWF。在任何一种情况下,用户都必须手动键入所有代码,这可能是足够的威慑力。

就个人而言,如果它是我的网站,我会查看一个图像处理程序,以便我可以轻松生成和缓存文件。

答案 6 :(得分:1)

如果代码在源代码页上以文本形式显示,则无法阻止用户在您的网页中执行他想要的操作。

您可以让用户更难以复制代码,但无法阻止它。

即使您将代码渲染为图像,用户仍然可以简单地从图像中读取和写回代码。

答案 7 :(得分:1)

尝试阻止用户从您的网站复制+粘贴文本时,您会遇到实际问题。许多人尝试过这种方式,并取得了不同程度的成功,但最终,即使是最好的解决方案也会有一个广泛的漏洞,中间确定的用户可以通过这个漏洞。

在您的特定示例中,更好的解决方案可能是修改代码,使其看起来正确但无法编译。您可以通过将代码中的字符替换为看起来相同但会阻塞编译器的其他字符来完成此操作。

例如,但不打破空格和其他空白字符而不是普通空格,大多数编译器会抱怨它。如果不能解决问题,那么有许多希腊字母在视觉上与普通的ASCII字母相同,但实际上是不同的字符代码;将一个“M”实例替换为Μ但不替换其他实例,您的代码看起来会很好,但会破坏编译器。

如果您确定的副本+粘贴骗子仍然设法让程序在此之后工作,那么他们可能应该得到答案的分数。 ; - )

请参阅this site以获取包含HTML实体代码的异常字符列表,其中许多代码适合此类偷偷摸摸的诡计。

答案 8 :(得分:1)

你做不到。最好的方法是使用图像。 或者您可以使用onSelectStart挂钩来提供自己的功能

<body onselectstart="return false">