如何在用户使用查看源代码选项时隐藏网站的 html 源代码

How to hide html source code of website when user use view source option

当我尝试访问浏览器上的 'View Source' 选项时,我看到一些网站隐藏了源代码...就像下面的页面...

 view-source:https://www.swiggy.com/bangalore/restaurants

他们是怎么做到的?他们使用什么技术,所以它看起来像是 javascript 的一部分,而不是我们用来生成网页的完全正式的 HTML 代码?

此外,当我在移动设备 phone 中看到相同的 swiggy.com 网站时,该网站的运行方式与他们的 android 应用程序相同。他们是否使用任何框架来帮助他们实现这种应用程序感觉,或者他们使用 AJAX / HTML 只是为了让我们感觉与他们的应用程序一样?

只是想指出我是新手,但也许这会有所帮助:

您可以使用

<body oncontextmenu="return false">
  ...
</body>

<script language="javascript">
  document.onmousedown = disableclick;
  status = "Right Click Disabled";
  Function disableclick(e)
  {
    if(event.button == 2)
    {
      alert(status);
      return false; 
    }
  }
</script> 

注意:与许多评论一样,这实际上是不可能的,但我会保留这段代码,以防它对您的特定情况有所帮助。

how to hide my source code so to not be copied

https://www.codeproject.com/Articles/11222/Disabling-the-right-click-on-web-page

您将无法隐藏 HTML。您可以缩小,做很多空间来尝试隐藏它或使用 javascript 到 "Hide" 或混淆并稍后创建 DOM 结构。最后,浏览器需要 html 才能呈现网页。

通过这样说,您可以看到创建的 DOM 并将看到所有 html 代码用于呈现您在浏览器上看到的内容。

没有人会完全隐藏它,只是一些方法"hide"或使其更难复制等

对于 android 或 IOS 应用程序,他们可以基于浏览器用户代理为您的设备创建自定义 html。 [ https://en.wikipedia.org/wiki/User_agent]

希望对您有所帮助。

另一个允许您不显示源代码的愚蠢选项是通过执行 单页应用程序(所有现代 Javascript 框架,如 Angular, React 或 Vue 在这个范围内制作。

在这种情况下,源代码将是一个几乎为空的 index.html 文件。 html 将通过您的 javascript 代码动态生成(通过使用模板或 JSX 语法)

PS:这样您仍然可以在浏览器的控制台中看到生成的 html(如 Chrome 中的元素选项卡)

这在大多数(如果不是全部)现代浏览器上是不可能的。即使您禁用 right clickctrl + uctrl + shift + i,仍然可以选择在 Google Chrome 中查看页面源代码(我只能验证浏览器)。

正如其他人所提到的,您可以缩小代码以掩盖它,但即便如此也可以 "decrypted" 如果您有足够的时间查看该令人作呕的代码。

您可以在您自己的服务器上编译您的 HTML 和 JS,并实时流式传输给您的用户,而不是在他们自己的计算机上编译。 HideJS 等服务让这一切变得简单。不管其他人怎么说,这使得任何人实际上不可能看到您的源代码。

禁用右键单击

document.addEventListener('contextmenu', event => event.preventDefault());

禁用 F12 选项

document.onkeypress = function (event) {
event = (event || window.event);
if (event.keyCode == 123) {
return false;
}
}
document.onmousedown = function (event) {
event = (event || window.event);
if (event.keyCode == 123) {
return false;
}
}
document.onkeydown = function (event) {
event = (event || window.event);
if (event.keyCode == 123) {
return false;
}
}

要禁用 ctrl+c、ctrl+u

jQuery(document).ready(function($){
$(document).keydown(function(event) {
var pressedKey = String.fromCharCode(event.keyCode).toLowerCase();

if (event.ctrlKey && (pressedKey == "c" || pressedKey == "u")) {
alert('Sorry, This Functionality Has Been Disabled!');
//disable key press porcessing
return false;
}
});
});

只需添加php

<?php
    for($i = 0; $i <= 500; $i++) {
        echo "

";
    }

    for($i = 0; $i <= 100; $i++) {
        echo "        ";
    }
?>
<html>
<head>...</head>
<body>...</body>
</html>
<?php 
    for($i = 0; $i <= 500; $i++) {
      echo "

";
    }
?>