本文介绍阿猪遇到的一例网站被恶意镜像的案例,并记录阿猪的排查过程与应对措施。

一、问题场景

  阿猪无意间通过搜索引擎发现一个网站与阿猪的博客在名称、LOGO上一摸一样。打开链接后,更是惊讶的发现与阿猪的网站在样式和内容上完全一模一样,甚至连联系方式和ICP备案号都没有改动。

  这种行为一方面侵犯了阿猪的著作权,另一方面会对阿猪的网站在搜索引擎中的权重产生负面影响,同时还会从搜索引擎的搜索结果中抢走阿猪的访问流量。

二、排查过程

  通过查询该站的WHOIS信息,阿猪发现该域名是今年5月份通过厦门易名网络公司注册的,使用了CloudFlare的DNS解析和CDN服务。

  阿猪尝试在自己的页面中添加了一个时间戳,结果发现网站重新部署后,对方的网站页面中也同步出现了一样的时间戳。

  阿猪起初怀疑是自己的代码仓或者COS存储桶泄露了。但是检查后发现代码仓和COS存储桶都是私有状态,也没有与外部代码仓或者平台关联,部署脚本中也没有向外部进行推送的命令。出于谨慎,阿猪还重置了token。但是问题依然存在,对方的网站仍然能够实时同步更新。

  后来阿猪猜测对方可能是通过RSS来监控阿猪网站的更新,并进行同步更新。于是阿猪想到找出对方用于监控的服务器,然后屏蔽其IP。阿猪下载了网站更新部署期间的访问日志,筛选出几个可疑的IP,然后把对方网站CDN分配的所有IP都一并放进了黑名单。但是问题依然存在,对方的网站仍然能够实时同步更新。

  这令阿猪感到一筹莫展。不得不向度娘和群友们求助。

三、应对措施

  经过查阅网上相关的文章,以及群友们的指点,阿猪采取了如下几个措施,供遇到相似问题的读者参考:

1、在网站中添加防盗链跳转代码

  既然对方的网站是无脑同步阿猪的网站内容,那么阿猪就在自己的网站中添加一段JS代码,如果当前网站的域名不是阿猪的域名,则自动跳转到阿猪的网站,让对方白忙活。代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<script>
(function() {
var encodedValidDomain1 = 'eWZ6aHUuY24='; // 使用Base64编码替代明文字符串`yfzhu.cn`
var encodedValidDomain2 = 'bG9jYWxob3N0'; // 使用Base64编码替代明文字符串`localhost`
var encodedRedirectUrl = 'aHR0cHM6Ly95ZnpodS5jbi8='; // 使用Base64编码替代明文字符串`https://yfzhu.cn`

// 对Base64编码后的域名和URL进行解码
function decodeBase64(encodedStr) {
return atob(encodedStr);
}
var validDomain1 = decodeBase64(encodedValidDomain1);
var validDomain2 = decodeBase64(encodedValidDomain2);
var redirectUrl = decodeBase64(encodedRedirectUrl);

// 如果访问不是来自指定的域名,则自动跳转页面
var hostname = document.location.hostname;
if (hostname !== validDomain1 && hostname !== validDomain2) {
window.location.href = redirectUrl;
}
})();
</script>

说明:
1、对阿猪自己的域名进行编码,目的是避免代码中直接明文出现yfzhu.cn,从而被自动替换为对方的域名。请自行替换为自己的域名和URL。(参考:Base64在线转换器
2、在判断逻辑中添加localhost,目的是方便本地调试。因为本地调试时一般是通过localhost访问网站的,它也会触发自动跳转。
3、阿猪使用的是Hexo框架和Butterfly主题,为了每一个页面都能包含这段JS代码,阿猪将代码放到了\themes\butterfly\layout\includes\head\analytics.pug文件的最后一行。如果你也打算将JS代码放入主题的PUG文件,请注意将代码开头的<script>改为script.,并且删去代码末尾的</script>

2、向域名的注册商报告滥用

  根据ICANN的政策,域名的注册商有义务配合被侵权者终止侵权行为。如果域名注册商是中国企业,我们还可以根据民法典、著作权法等法律法规向对方提出配合的要求。如果域名注册商是美国企业,我们还可以根据DMCA(Digital Millennium Copyright Act,数字千年版权法案)向对方提出配合要求。

  根据域名的WHOIS信息找到域名注册商的官方网站,然后将侵权事项通过EMail、在线客服等方式告知对方,要求对方停止为侵权域名提供DNS服务器地址更新服务。如果打算起诉侵权者的话,还可以要求对方配合提供侵权者的姓名、身份证号、联系电话、住址等信息。

3、向搜索引擎报告滥用

  参照第2条,向搜索引擎报告滥用,寻求对方的配合,将侵权者的网站从收录条目中剔除。

  参考:谷歌的举报违法内容页面

4、向域名的DNS解析服务商报告滥用

  参照第2条,向域名的DNS解析服务商报告滥用,寻求对方的配合,终止向侵权者提供DNS解析服务。

5、向网站的托管商报告滥用

  参照第2条,向网站的托管商报告滥用,寻求对方的配合,终止向侵权者提供服务。

  在本例中,对方网站使用的是CloudFlare的DNS解析服务,并疑似通过CloudFlare的Worker服务实现实时反向代理,所以阿猪基于DMCA向CloudFlare报告了滥用

6、向域名的注册局报告滥用

  每个域名的注册局都有防滥用(Anti Abuse)的政策,打开对应域名的注册局官网,然后找到报告域名滥用的页面,通过提交请求的方式将侵权事项告知对方。寻求对方的配合。