Skip to content

Commit da5a18c

Browse files
committed
add post
1 parent ff88ad4 commit da5a18c

File tree

7 files changed

+120
-0
lines changed

7 files changed

+120
-0
lines changed
312 KB
Loading
452 KB
Loading
38.1 KB
Loading
437 KB
Loading
229 KB
Loading
179 KB
Loading
Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
1+
---
2+
title: "博客被恶意镜像"
3+
date: 2024-09-26T22:18:23+08:00
4+
draft: false
5+
tags:
6+
- cloudflare
7+
- github
8+
- google
9+
---
10+
11+
## 起因
12+
13+
9月初的时候,在`Google Search Console`里发现了一个外链,域名是`**.top`
14+
15+
随手点过去看了下,发现居然跟我的博客内容一模一样,就是内容变成了繁体。
16+
17+
知道这肯定是被拿来镜像了,不过当时也没在意,就没管。
18+
19+
后来在[v2ex](https://v2ex.com/t/1070859)上也发现类似的问题,还有其他博主也反馈有被镜像,感觉像是个黑产批量的操作。
20+
21+
这周`Google Search Console`反馈我的站点有个新问题,点进去一看,嚯。
22+
23+
![搜索问题](20240927-192400.png)
24+
25+
在谷歌里搜了一下,发现已经有很多这个站点的收录了。
26+
27+
开始影响到我的博客收录了,这怎么能忍呢,必须处理掉它。
28+
29+
## 分析
30+
31+
测试了一下这个站点,不得不说,这个人是相当的聪明。
32+
33+
![国内访问404](20240926-200728.jpg)
34+
35+
![海外访问200](20240927-100208.png)
36+
37+
使用了`Cloudflare`服务,隐藏了真实的服务ip。
38+
39+
同时判断了访问ip,如果是国内用户直接返回了404,海外才会正常返回,这样一般国内用户就发现不了。
40+
41+
![](20240927-102245.png)
42+
43+
还重写了`robots.txt`,只让谷歌收录。
44+
45+
查了一下域名`Whois`信息,注册在阿里云。
46+
47+
![whois](20240927-200728.png)
48+
49+
页面上挂的备案号都是我的,搞事情的话后面再扯上我,这就麻烦了。
50+
51+
这就像块牛皮癣,越想越恶心。
52+
53+
我的博客搞了两套部署,一套部署在[Cloudflare Pages](https://liudon.com),一套部署在[IPFS](https://liudon.xyz)
54+
55+
接下来就是搞清楚,他是镜像的哪个站点:
56+
57+
### 1. IPFS站点
58+
59+
看他的`robots.txt`内容,我一开始怀疑是镜像的IPFS站点[liudon.xyz](https://liudon.xyz),感觉像是在我的`robots.txt`前面加了一段内容。
60+
61+
```
62+
curl 'https://liudon.xyz/robots.txt'
63+
User-agent: *
64+
Disallow: /
65+
```
66+
67+
幸好还有一个`Robots meta 标记`,于是把IPFS部署的站点加上了这个属性。
68+
69+
部署后发现这个镜像站并没有更新,排除了这个可能。
70+
71+
![](20240927-102447.png)
72+
73+
### 2. Github 静态仓库
74+
75+
我在`Github`上单独搞了个分支存放生成的静态文件,`Cloudflare Pages`直接读取这个分支进行部署。
76+
77+
怀疑他是不是监控了这个仓库的提交记录,直接拿这个来部署的镜像站。
78+
79+
我把`Cloudflare Pages`的自动部署关掉,然后直接修改静态文件。
80+
81+
更新后发现,这个静态站并没有预期的更新。
82+
83+
#### 3. Cloudflare Worker
84+
85+
在分析过程中,发现我的博客更新后,他的站点也会很快就更新。
86+
87+
因为他的网站部署在`Cloudflare`上,考虑是走的`Cloudflare Worker`反代,直接请求目标站点,然后进行繁体翻译返回。
88+
89+
这样就完全不需要关心更新的问题,完全自动化处理,太完美了。
90+
91+
## 反制
92+
93+
其实这里并没有太好的办法反制,`robots`文件被他重写了,无法控制,使用`Robots meta 标记`的话会影响到我们自己的收录。
94+
95+
只能是通过加一段JS代码,参考自[竹林里有冰](https://zhul.in/2024/07/18/my-blog-is-completely-proxied-and-translated-into-traditional-chinese/),判断访问的域名非法的话,直接跳转到正确地址。
96+
97+
```
98+
const host = window.location.host
99+
if (host !== 'liudon.com' && ! host.startsWith('localhost') && ! host.startsWith('127.0.0.1')) {
100+
document.body.innerHTML = [
101+
'<div style="margin: auto;">',
102+
'<h1>当前页面并非本文作者的主页,将在五秒后跳转。</h1>',
103+
'</div>',
104+
].join('')
105+
document.body.style = [
106+
'background-color: white;',
107+
'color: black;',
108+
'text-align: center;',
109+
'font-size: 50px;',
110+
'width: 100vw;',
111+
'height: 100vh;',
112+
'display: flex;',
113+
].join('')
114+
setTimeout(() => {
115+
window.location.href = 'https://liudon.com'
116+
}, 5000)
117+
}
118+
```
119+
120+
查了一下,搜索Bot爬取的时候会执行js,希望能更新掉已收录的网页信息。

0 commit comments

Comments
 (0)