---
title: 保护网站不被仿站禁止本地加载
description: 各种CMS繁荣发展的带来的是各种仿站的需求，看到好看的网站，想通过仿站据为己有也是人之常情，但是想保护自己网站的设计和功能成为独一无二也就应运而生了。
author: chaihongjun
category: frontend
published: 2016-05-24
url: https://chaihongjun.me/frontend/3.html
---

# 保护网站不被仿站禁止本地加载

偶然发现一个设计不错的网站，心血来潮想“扒”下来看看，结果通过工具把各种文件拉到本地之后发现首页就是一个大白屏，这说明这个网站通过前端的javascript做了一定的"防盗版"措施，逻辑应该是发现网站在本地二不是通过线上域名请求的，于是中断了各种请求下载和页面渲染工作。

整个网站就2个javascript文件，一个是jquery，那么蹊跷肯定出在另外一个javascript文件里。为了验证，于是本地禁用了另外一个javascript文件，并刷新网站首页，发现首页加载到一定阶段就暂停了，说目确实是另外一个文件在做检查工作，进一步在另外一个javascript文件中查看发现了`eval`字样，说明有代码加密混淆的情况，于是把eval起始的包裹的代码做解密美化，工具地址:http://jinmiyun.cn/endecodejs/。

再分析解密之后的文件内容，发现一端特殊的代码：

MDBLOCK0
这个函数判断域名如果不符合某个规则，那么久直接删除html的body元素，因为也就看不到页面的内容了。再看一下这个函数是在这段代码调用：
MDBLOCK1
这段代码大致也是页面加载之初就开始判断了。code1和code2这两段代码的目的是从当前页面的URL中解析出紧跟在#p后面的数字，并将这个数字减去1后存储在pageIndex变量中。这种技术常用于单页应用（SPA）中，通过URL的哈希值来控制页面内容或状态的显示，例如，在分页显示内容时，通过改变URL的哈希值来指示当前显示的页码。

所以，我们也可以模仿这段代码写出自己的保护代码：
MDBLOCK2
 

---

> 本文首发于 [chaihongjun.me | 柴宏俊 web 技术学习笔记](https://chaihongjun.me/frontend/3.html)，采用 CC BY-NC-ND 4.0 协议，转载请保留出处与链接。
