You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何实现用户查看网页源代码时显示空白页面?

如何让网页在用户查看源代码时显示空白?

首先得明确一点:完全阻止用户查看网页源代码是做不到的——毕竟浏览器必须下载代码才能渲染页面。不过我们可以通过一些技巧,让普通用户通过右键“查看源代码”或按Ctrl+U看到的内容是空白,或者混淆真实代码。下面是几种可行的方案:


方法1:用document.write动态覆盖页面

这个思路是等页面加载完成后,用空白内容覆盖原本的HTML结构。用户通过“查看源代码”看到的是执行后的空白,但浏览器的“检查元素”仍能看到真实DOM(毕竟已经渲染过了)。

代码示例:

<!DOCTYPE html>
<html>
<head>
    <title>空白源代码示例</title>
    <script>
        window.onload = function() {
            // 清空整个文档内容
            document.write('');
            document.close();
        };
    </script>
</head>
<body>
    <!-- 这里是你的真实页面内容 -->
    <h1>这是真实内容,但查看源代码会显示空白</h1>
</body>
</html>

原理:页面加载完成后,document.write('')会重置整个文档流,此时“查看源代码”展示的是执行后的结果,但开发者工具的「Elements」标签依然能看到初始渲染的DOM结构。


方法2:用iframe嵌套真实内容

把真实页面放在隐藏的iframe里,主页面只保留空白框架。用户查看主页面源代码时只能看到iframe标签,但还是能通过src属性找到真实页面的地址(懂点技术的用户依然能绕过)。

代码示例:

<!DOCTYPE html>
<html>
<head>
    <title>空白源代码示例</title>
    <style>
        /* 让iframe占满整个页面,无边界 */
        iframe {
            position: fixed;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            border: none;
        }
    </style>
</head>
<body>
    <!-- 主页面无内容,真实内容在iframe中 -->
    <iframe src="your-real-page.html"></iframe>
</body>
</html>

注意:your-real-page.html是你的真实页面文件,用户可以通过开发者工具的「网络」标签直接抓取这个文件的内容。


方法3:动态生成DOM(进阶混淆)

用JavaScript完全动态生成页面内容,初始HTML只保留必要的script标签,让用户查看源代码时几乎看不到有效内容。

代码示例:

<!DOCTYPE html>
<html>
<head>
    <title>动态生成内容示例</title>
    <script>
        window.onload = function() {
            // 动态创建所有页面元素
            const container = document.createElement('div');
            container.innerHTML = `
                <h1>这是动态生成的内容</h1>
                <p>查看源代码只能看到script标签</p>
            `;
            // 清空初始文档并添加动态内容
            document.documentElement.innerHTML = '';
            document.body.appendChild(container);
        };
    </script>
</head>
<body>
    <!-- 这里的内容会被清空,源代码中仅保留script -->
</body>
</html>

关键提醒

以上所有方法都只能阻止普通用户快速查看源代码,对懂技术的用户来说几乎没用:他们可以通过开发者工具的「网络」标签抓取所有请求的文件,或者直接查看渲染后的DOM结构。本质上,网页内容是公开的,我们只能做“防君子不防小人”的限制。

内容的提问来源于stack exchange,提问作者Satya Chaitanya

火山引擎 最新活动