【问题标题】:Disable copying data from webpage禁用从网页复制数据
【发布时间】:2011-07-25 05:45:45
【问题描述】:

我正在寻找任何方法来创建网页,这样用户就无法从我的网页中复制内容。即用户将无法选择网页上存在的任何文本。 假设我正在使用 asp.net

有什么有趣的想法可以完成这个任务吗?

【问题讨论】:

  • 您是否尝试过禁用右键单击
  • Dorabubu 说什么,然后按 ctrl+c
  • 但是我们不使用右键选择文本..如果用户使用鼠标选择文本并按 ctrl + C 怎么办?
  • 没有真正的方法每件事都可以被覆盖;)
  • 某些网站上的数据可能是唯一的,如果作者不希望这些数据很容易被复制,在这种情况下,我们需要一些方法来阻止大多数用户,假设大多数的用户不会知道源代码或调试器等技术部分,并且不使用任何开销(例如转换为图像,使用图像服务器等)..所以我们可以使用下面回答的任何技术。跨度>

标签: asp.net html css


【解决方案1】:

最终你做不到。

如果您禁用选择文本的功能,上下文菜单甚至只是上下文菜单中的复制选项,用户仍然能够查看您的内容。

如果他们能看到它,他们可以复制它:

  • 截屏。
  • 拍照。
  • 将他们看到的文本输入到记事本中。
  • 将文本听写到录音机中。

开发工作不值得,您不会阻止坚定的复制者。你最终会做的只是惹恼你的合法用户。

为您的网站增加价值,让人们希望不断回来,而不仅仅是获取内容并运行。这可能是:

  • 允许用户生成的内容扩展现有内容。
  • 定期更新内容,使其始终保持新鲜。

【讨论】:

  • 更何况任何主体都可以使用Fiddler或Firebug之类的工具来抓取页面源代码!
  • 我们可以使用页面源轻松复制文本...当我想从一个禁止复制的网站上复制某些内容时,我也这样做了....但是让我们谈谈一个 外行...他不知道什么是页面源和调试器:-)
  • @Sangram - 您可以停止右键单击等。查看机制的其他答案。但是,您必须权衡所涉及的努力与潜在收益。你可能会发现它充其量是边缘化的。
  • @Chris F: 把透明的DIV放在数据前面怎么样。所以..用户可以看到&读取数据但不能复制..怎么样?
  • @Samgram - 我想我以前遇到过 - 我想它可以工作。
【解决方案2】:

您可以使用user-select CSS3 属性

像这样的HTML:

<span class="protected">Datas you wants protect</span>

以及对应的CSS:

.protected {
    -moz-user-select:none;
    -webkit-user-select:none;
    user-select:none;
}

看我的例子:http://jsfiddle.net/DoubleYo/RPv4q/

此解决方案不是跨浏览器,但可以在 firefox 和 chrome/safari 上正常使用

编辑:高级用户可以通过查看页面源来复制您的内容,制作pdf或打印您的页面,有些人提到firebug,fiddler。

【讨论】:

  • 能否在数据前面放一个透明的DIV,这样用户可以看到和读取数据但不能复制?
  • 只需在您要保护的数据周围添加一个&lt;span class="protected"&gt;,然后在CSS 中使用.protected 选择器。
  • 请编辑您的答案并在答案中附加您的评论...如果您这样做会非常好..
  • 不费吹灰之力直接复制!
【解决方案3】:

如果您发送任何文本,用户将能够看到源代码,因此通过任何方法禁用复制和粘贴都不会真正帮助阻止确定的复制者。

最有效的方法是将您的文本呈现到服务器上的图像中并发送图像而不是原始文本,但在此之前有几个缺点需要考虑:1)您将需要容量您的服务器以生成图像。 2)数据负载将高于文本,压缩效率会降低。 3) 你也可能会丢失一些缓存选项。

您是否有不希望用户复制文本的特定原因,也许如果您可以提供更多详细信息,其他方法可能是可能的?

【讨论】:

  • 有时,网站上的数据是独一无二的,我不希望这些数据被轻易复制。我们可以使用页面源轻松复制文本...我在想要复制时也这样做了来自禁用复制的网站的东西....但是让我们谈谈一个外行..他不知道什么是页面源和调试器:-)
【解决方案4】:

试试这个

<html>
<head>
<script language="<strong class="highlight">javascript</strong>">

 function onKeyDown() {

// current pressed key
 var pressedKey = String.fromCharCode(event.keyCode).toLowerCase();

 if (event.ctrlKey && (pressedKey == "c" || 
                    pressedKey == "v")) {
// <strong class="highlight">disable</strong> key press porcessing
event.returnValue = false;
 }

} // onKeyDown

 </script>
 </head>

 <body>
   <form name="aForm">
    <input type="text" name="aText" onkeydown = "onKeyDown()">
 </form>
 </body>
 </html>

【讨论】:

    【解决方案5】:

    当有人访问您的网站时,他们会收到构成您网站大部分内容的 html/css/images/JavaScript。因此,他们已经拥有您的内容,因为大多数浏览器也会缓存这些内容,以便更快地浏览。

    在此处阅读有关 HTTP 的更多信息 - http://www.http.header.free.fr/http.html

    因此,完全阻止任何知道 http 协议如何工作的人是不太可能的。但是你可以做的是监听右键单击并阻止普通最终用户右键单击和保存图像等。你可以在这里获得一个 sn-p - http://www.dynamicdrive.com/dynamicindex9/noright.htm

    但是,如果您正在谈论保护正在销售的图像/文件,请查看Protect html/php/image files from tracking,因为它适用于您的问题。

    【讨论】:

      【解决方案6】:

      你可以像这样添加到你的身体标签:

      <body onselectstart="return false">
      

      【讨论】:

        【解决方案7】:

        这是互联网。您无法完全保护页面的内容。

        但是您可以为用户完成这项任务。

        您也可以处理键盘和鼠标输入,例如 Ctrl+C 或鼠标右键单击。

        但请记住,用户始终可以查看页面的源代码,将其复制并粘贴到 HTML 编辑器中。

        您可以在 Silverlight 或 Flash 中创建您的网站,但这会“禁用”搜索引擎索引。

        【讨论】:

        • 我们可以使用页面源轻松复制文本...当我想从禁用复制的网站复制某些内容时,我也这样做了....但是让我们谈谈一个 外行...他不知道什么是页面源和调试器:-)
        【解决方案8】:

        将您的页面转换为图像

        【讨论】:

        • 或者强制刷机。但是引用会很糟糕。
        【解决方案9】:

        您可以禁用选择,如果没有选择,您将无法复制/粘贴,但是我建议您只在页面的某些部分这样做,因为这会让用户感到沮丧。

        这是您可以执行此操作的简单代码,例如,如果您有 divid="notme",请运行 disableSelOnThis("notme");

            function disableSelOnThis(IdName) {
                var oElem = document.getElementById(IdName);
                if (oElem)
                    disableSelection(oElem); }
        
            function disableSelection(element) {
                element.onselectstart = function() {
                    return false;
                };
        
                element.unselectable = "on";
                element.style.MozUserSelect = "none";
                element.style.cursor = "default";   
            }  
        

        代码来自:http://ajaxcookbook.org/disable-text-selection/,但它的接缝表明该网站不再存在。

        当然,如果没有启用 javascript,这是行不通的,ChrisF 所说的一切仍然有效。

        【讨论】:

          【解决方案10】:

          只需将以下 javascript 复制并粘贴到您的网页中即可:

          <script language="javascript" type="text/javascript"> 
                function disableselect(e) {             
                    return false 
                } 
                function reEnable() { 
                    return true 
                } 
          
                document.onselectstart = new Function("return false") 
          
          
                if (window.sidebar) { 
                    document.onmousedown = disableselect                    // for mozilla           
                    document.onclick = reEnable 
                } 
          
                function clickIE() { 
                    if (document.all) { 
                        (message); 
                        return false; 
                    } 
                } 
          
          
                document.oncontextmenu = new Function("return false") 
          
               var element = document.getElementById('tbl'); 
          
               element.onmousedown = function () { return false; }        // mozilla         
          
             </script>           
          

          注意:如果上述代码不适用于 Firefox,则在需要限制的正文标签中添加 style="-moz-user-select:none" 与上述代码一起。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2021-10-10
            • 1970-01-01
            • 2017-07-19
            • 1970-01-01
            • 2013-06-13
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多