【问题标题】:How to hide html source & disable right click and text copy?如何隐藏 html 源并禁用右键单击和文本复制?
【发布时间】:2011-09-29 15:30:50
【问题描述】:

以下网站已禁用右键单击和查看源代码。

http://www.immihelp.com/visitor-visa/sponsor-documents.html

谁能阐明这是怎么可能的?

【问题讨论】:

  • 查看源代码已禁用?别开玩笑了...:)
  • 在那个网站上按 Control+U...我看到很多源代码 :)
  • 哇,“右键单击禁用”脚本。 10-15 年前的倒叙!
  • 不能右键单击?我能够。哦,NoScript :)
  • 每当一个页面阻止我这样做时,我发现查看源代码是我唯一的目标——让我在现实把我吸回之前让我高兴一会儿。

标签: html


【解决方案1】:

您可能无法阻止用户查看 HTML 源内容。您列出的站点阻止用户右键单击。但事实上你仍然可以在 Firefox 中使用 CTRL + U 来查看源代码!

【讨论】:

  • Ctrl+U 适用于我见过的几乎所有浏览器。猞猁是个例外。
  • zapreaction.com 他们禁用了 CTRL+U
  • @prashant Bhate stackoverflow.com/a/40053874/6572922此链接将删除快捷键并右键单击
【解决方案2】:

他们使用一些基本的 javascript 来做到这一点,但这实际上并没有隐藏您的 HTML 源代码!在许多浏览器中,您可以简单地转到菜单上的查看->源代码。即使你不能,也可以简单地加载像Fiddlerpacket-sniff the connection 这样的调试代理。

不可能有效地隐藏发送给客户端的 HTML、JavaScript 或任何其他资源。不可能,也不是很有用。

此外,不要尝试禁用右键单击,因为该菜单上还有许多其他项目(例如打印!)人们经常使用。

【讨论】:

  • zapreaction.com 他们禁用了 CTRL+U 。我在看他们是怎么做到的,。没有源视图,也不能右键单击。
  • @Jai 好吧,他们正在使用 iframe 加载 /home.php。我知道这一点,因为我可以使用我在回答中描述的方法查看他们的源代码。只需按 F+12(无论如何在 Chrome 中)或以其他方式打开您的开发人员工具。此外,任何宣传网络开发/搜索引擎优化机构的网站都不是我会使用的。
【解决方案3】:

以下网站已禁用右键单击和查看源代码。

他们骗了你。只需在视图源中向下滚动即可。

此外,采用此类策略会导致您不专业。不要这样做。

【讨论】:

  • 禁用右键单击是一种可用性攻击,但简单的技巧,例如在开头加载换行符或阻止直接下载带有其他包装图像的图像,对 99% 的用户都有效,因此它非常有效并且不会不会造成任何伤害。仅仅因为 1% 的人口可以轻松绕过它并不意味着它毫无用处。
  • @yi_H 它仍然没用,因为您正在保护无价值的资产,代价是(1)降低您自己代码的可读性(您必须维护)或(2)拥有完全无用的视图Web 应用程序中的逻辑。这对我来说似乎相当不专业。此外,能够绕过“安全措施”的 1% 是唯一对代码真正感兴趣的 1%。
  • 如果你认为只有那 1% 的用户想要下载图片,那你就大错特错了。
  • @yi_H 我认为只有 1%(实际上要少得多)想要下载图像的人会知道在源代码中查找它们。
  • 这就是我给出包装图像示例的原因。但无论如何.. 我并不是说隐藏内容是个好主意(这取决于所有者想要什么)我只是说它有效。
【解决方案4】:

您仍然可以通过从 Firefox 的工具栏中转到“查看”>“页面源代码”来查看网站上的源代码。或者在 IE 中查看 > 源代码。

通过 javascript 禁用右键单击。 javascript的来源是:

http://www.immihelp.com/common/utils.js

【讨论】:

    【解决方案5】:

    隐藏 HTML 源代码是不可能的。禁用右键单击只会让希望对您的内容进行建设性操作(例如复制/粘贴内容或表单,或打印)的用户感到沮丧。

    如果您正在运行服务器端脚本语言,您可以使用obfuscate or minify the HTML、CSS 和 Javascript。这将使他人更难复制您的代码或查看您是如何实现某些效果的。

    【讨论】:

      【解决方案6】:

      在我的浏览器 (Chrome) 中未禁用查看源代码。

      但是他们在源代码中添加了很多空白行,因此您必须向下滚动才能查看它。尝试向下滚动,您会看到。

      禁用的右键单击可以使用 javascript,但不要这样做。这对用户来说非常烦人。

      【讨论】:

        【解决方案7】:

        您可以使用 JavaScript 禁用上下文菜单(右键单击),但它很容易被覆盖。例如,在 Firefox 中,转到 选项 -> 内容,然后在“启用 JavaScript”复选框旁边,单击 高级。取消选中“禁用或替换上下文菜单”选项。现在你可以右键单击所有你想要的。

        一个简单的 CTRL + U 将查看源代码。永远不能禁用它。

        【讨论】:

        • zapreaction.com 他们禁用了 CTRL+U
        【解决方案8】:

        相信我,没有人像你想象的那样想要你的资源。当您决定开发网页时,您就成为了一名开源开发人员。

        无法禁用查看页面源。您可以尝试绕过不了解的用户查看源代码,但这不会阻止任何了解如何使用菜单或快捷键的人。您最好的选择是以一种不会被看到您的来源的人损害的方式来开发您的网站。如果您出于保护知识产权以外的任何其他原因试图隐藏它,那么您做错了。

        【讨论】:

          【解决方案9】:

          正如其他人所说的那样,这是一件可怕的事情,但如果您真的打算这样做,请使用此代码,并在页面源代码的顶部放置大量返回:

          <html>
            <head>
              <script>
                function disableClick(){
                  document.onclick=function(event){
                    if (event.button == 2) {
                      alert('Right Click Message');
                      return false;
                    }
                  }
                }
              </script>
            </head>
            <body onLoad="disableClick()">
            </body>
          </html>
          

          【讨论】:

          • 伙计,这很棒,它只适用于 Mozilla 而不适用于 Chrome,为什么?
          • 看起来onclick 不会因为在 chrome 中右键单击而被触发(我认为它曾经是),将其更改为 onmousedown 它将适用于 chrome
          【解决方案10】:

          您无法有效地隐藏您的 HTML 和 JavaScript 代码,即使您对其进行加密或缩小。

          如果您要隐藏的代码非常敏感,则它应该位于站点的受保护区域,即您只能通过用户名和密码访问的区域,或者可能位于客户端应用程序中'不通过网络公开。

          如果您必须通过 Web 前端公开应用程序功能,您可以使用 Silverlight 来编写前端或前端的位。在过去,您也可以使用 ActiveX。

          【讨论】:

            【解决方案11】:
             <body oncontextmenu="return false">
            

            使用此代码禁用右键单击。

            【讨论】:

              【解决方案12】:
              $(document).ready(function() { 
               `$(document).bind("contextmenu copy paste cut drag drop ",function(e {`return false;`});`
              

              【讨论】:

                【解决方案13】:
                <script>
                $(document).ready(function() {
                    document.onkeydown = function(e){
                        if (e.ctrlKey &&
                            (e.keyCode === 67 ||
                                e.keyCode === 86 ||
                                e.keyCode === 85 ||
                                e.keyCode === 117)) {
                            return false;
                        } else {
                            return true;
                        }
                    };
                });
                </script>
                

                【讨论】:

                  【解决方案14】:

                  此代码用于禁用右键单击事件和键盘快捷键。

                  试试这段代码

                  document.onkeydown = function(e) {
                      if(e.keyCode == 123) {
                       return false;
                      }
                      if(e.ctrlKey && e.shiftKey && e.keyCode == 'I'.charCodeAt(0)){
                       return false;
                      }
                      if(e.ctrlKey && e.shiftKey && e.keyCode == 'J'.charCodeAt(0)){
                       return false;
                      }
                      if(e.ctrlKey && e.keyCode == 'U'.charCodeAt(0)){
                       return false;
                      }
                  
                      if(e.ctrlKey && e.shiftKey && e.keyCode == 'C'.charCodeAt(0)){
                       return false;
                      }      
                   }

                  【讨论】:

                    【解决方案15】:

                    你不能。

                    任何东西都可以被浏览器读取,也可以被人类读取。如果您想隐藏某些内容,请不要将其发送到用户的浏览器。

                    你可以添加各种噱头和技巧来禁用右键和禁用ctrl+U

                    用户只需将view-source: 添加到网址,他们就会立即看到源代码。

                    例子

                    view-source:https://stackoverflow.com

                    【讨论】:

                      【解决方案16】:

                      如果您使用的是 jQuery,可以像这样禁用整个页面的右键单击:

                      $( document ).ready(function() {
                          $("html").on("contextmenu",function(){
                              return false;});}
                      

                      【讨论】:

                      • 此答案假定 jquery 已包含并且可用,对吗?我不认为答案是独立的。
                      • 答案提供了可行的解决方案。 jQuery 是一个易于使用的 JavaScript 库。我假设“contextmenu”在 JavaScript 中也有等价物......
                      【解决方案17】:

                      没有完全的证明方法。

                      但是这里有一些策略可以用来隐藏源代码,使用“window.history.pushState()”并在body标签中添加oncontextmenu="return false"作为@ 987654323@ like &lt;body oncontextmenu="return false"&gt; 也可以禁用右键单击以及使用“history.pushState()”修改查看源内容。

                      详情在这里 - http://freelancer.usercv.com/blog/28/hide-website-source-code-in-view-source-using-stupid-one-line-chinese-hack-code

                      【讨论】:

                        【解决方案18】:

                        我已经构建了一个简单的自检php文件,它只允许人类真正加载,而不是像机器人这样的(在线源代码查看器)..

                        我不确定从 Chrome 中查看源代码,但它确实阻止了对 html 的访问...不仅仅是混淆,它使用反弹提交来验证加载。

                        短代码在源代码查看器中仍然可见,所以我也对其进行了混淆...

                        页面加载并反弹回来,反弹得到的是真正的页面,而不是加载器!

                           // Create A New File called ( lock.php ) 
                        

                        把这个复制进去....

                        <?php 
                        // PAGE SOURCE GUARD by Elijah Cuff.
                        if (!hasParam('bounce'))
                        {
                        echo "
                        <script type='text/javascript'>
                        <!-- 
                        eval(unescape('%66%75%6e%63%74%69%6f%6e%20%63%36%36%32%32%30%36%62%32%63%28%73%29%20%7b%0a%09%76%61%72%20%72%20%3d%20%22%22%3b%0a%09%76%61%72%20%74%6d%70%20%3d%20%73%2e%73%70%6c%69%74%28%22%37%36%33%33%31%37%31%22%29%3b%0a%09%73%20%3d%20%75%6e%65%73%63%61%70%65%28%74%6d%70%5b%30%5d%29%3b%0a%09%6b%20%3d%20%75%6e%65%73%63%61%70%65%28%74%6d%70%5b%31%5d%20%2b%20%22%35%37%35%31%36%35%22%29%3b%0a%09%66%6f%72%28%20%76%61%72%20%69%20%3d%20%30%3b%20%69%20%3c%20%73%2e%6c%65%6e%67%74%68%3b%20%69%2b%2b%29%20%7b%0a%09%09%72%20%2b%3d%20%53%74%72%69%6e%67%2e%66%72%6f%6d%43%68%61%72%43%6f%64%65%28%28%70%61%72%73%65%49%6e%74%28%6b%2e%63%68%61%72%41%74%28%69%25%6b%2e%6c%65%6e%67%74%68%29%29%5e%73%2e%63%68%61%72%43%6f%64%65%41%74%28%69%29%29%2b%2d%36%29%3b%0a%09%7d%0a%09%72%65%74%75%72%6e%20%72%3b%0a%7d%0a'));
                        eval(unescape('%64%6f%63%75%6d%65%6e%74%2e%77%72%69%74%65%28%63%36%36%32%32%30%36%62%32%63%28%27') + '%47%67%7f%76%73%44%15%15%45%69%74%7e%76%23%7a%6e%7f%6f%75%6c%46%2f%73%74%7f%7f%2d%2f%6a%6f%42%28%7e%62%7a%2d%45%15%15%47%66%71%73%7a%7a%20%7f%78%73%6a%45%2d%6b%66%6f%6f%6a%74%2e%23%73%62%72%6d%46%2d%61%70%7e%75%69%6d%2d%21%79%66%74%7e%6e%4a%2d%32%29%44%44%30%68%71%77%7d%7f%41%1a%15%47%34%6c%73%7d%74%41%12%16%47%7c%60%7d%6a%77%7a%42%16%17%23%7c%69%71%6f%7c%78%31%78%6b%7c%5f%68%76%6a%73%7e%7f%27%69%7e%75%69%7c%6a%72%71%2f%29%23%84%1a%15%23%6b%75%6f%7e%74%6e%75%7c%31%68%62%7f%4e%73%6b%75%6e%73%7f%49%79%4a%6f%27%67%28%79%67%7b%67%2a%2a%35%7f%7e%6d%7a%6a%7f%2f%2f%47%16%17%23%27%85%37%23%33%33%33%2e%41%15%15%45%30%78%6f%7d%6a%7f%7f%41%12%10%44%30%69%7f%72%74%417633171%35%39%35%35%31%30%36' + unescape('%27%29%29%3b'));
                        // -->
                        </script>
                        <noscript><i>Javascript required</i></noscript>
                        ";
                        exit;
                        }
                        function hasParam($param)
                        {
                            return isset($_POST[$param]);
                        }
                        ?>
                        

                        现在将其添加到
                        的最顶部 每页.. 示例....

                        <?php
                         // use require for more security...
                        include('lock.php'); 
                        ?>
                        
                        <HTML> 
                        etc.. etc...
                        

                        【讨论】:

                          【解决方案19】:

                          我想,这里没有提到右键,@Jishnu V S。

                          document.onkeydown = function(e) {
                              if(e.keyCode == 123) {
                               return false;
                              }
                              if(e.ctrlKey && e.shiftKey && e.keyCode == 'I'.charCodeAt(0)){
                               return false;
                              }
                              if(e.ctrlKey && e.shiftKey && e.keyCode == 'J'.charCodeAt(0)){
                               return false;
                              }
                              if(e.ctrlKey && e.keyCode == 'U'.charCodeAt(0)){
                               return false;
                              }
                          
                              if(e.ctrlKey && e.shiftKey && e.keyCode == 'C'.charCodeAt(0)){
                               return false;
                              }      
                           }

                          【讨论】:

                            【解决方案20】:

                            不可能,但有替代方案。它不隐藏 HTML,而是隐藏 JS 代码。总比什么都不隐藏要好。如果您使用任何前端框架,如 ReactJS 等。因此,您实际上可以隐藏您的源代码,使其不显示在浏览器的 Sources 选项卡中。

                            按照这些简单的步骤操作:

                            1. 在您的项目中创建一个.env 文件
                            2. .env文件中写入GENERATE_SOURCEMAP=false
                            3. 现在,将代码部署到 Netlify 等。

                            现在,我们制作了*min.js 文件,而不是浏览器中的原始 JS 文件。

                            【讨论】:

                              猜你喜欢
                              • 1970-01-01
                              • 2017-01-04
                              • 2012-12-25
                              • 2013-04-24
                              • 2017-06-13
                              • 1970-01-01
                              • 1970-01-01
                              • 1970-01-01
                              • 1970-01-01
                              相关资源
                              最近更新 更多