背景
为什么突然提到镜像攻击这个东东,因为昨天有朋友告诉我,我们网站被别人造了一个镜像网站
对方疑似是镜像攻击的惯犯,因为我朋友也被镜像攻击了,他在 Bing 搜索的时候发现我的网站也被镜像了,镜像我们网站的目的似乎是接入 Google AD(广告),然后借助我们的 SEO 权重流量盈利
目前这个镜像网站的网址是: https://srsg.clbug.com/
⚠⚠⚠严重警告⚠⚠⚠,不要登录上面这个网站,这不是我们的网站,该网站含有有害或者不受信任的内容
目前我们已经采取了一定的措施防范这个问题,并且看起来 Bing 和 Google 都下架了这个网站(搜索引擎的算法还是相当靠谱的,一般情况下不会有太大的 SEO 问题),之后视情况而言还可能采取更加有效的手段
鲲 Galgame 论坛的官方网站目前只有两个
除了这两个网站之外的,和本论坛一模一样的网站,都是假冒伪劣网站,千万不要访问,更不要登陆
镜像攻击
镜像攻击(Mirror Attack),也常被称为 “反向代理攻击” 或 “内容农场式攻击”,是一种网络攻击手段
举个例子,我们平时可能看到过假的 adidas(阿迪达斯),长得和真的看起来一摸一样,这就是类似于镜像攻击的东东
对方仿造一个和你一摸一样的网站,但是细节的地方可能不一样,比如说点击链接就会被跳转到恶意网站,登录网站之后你的密码将会被对方得知导致账号被盗等等
判断方法
我们在解决问题之前,首先需要判断一下这是不是镜像攻击,如果是再应对,有可能只是克隆了一下网站
一个最简单的判断方法就是,更新一下网站,看看攻击者是网站是否同步更新了,如果更新了,就说明是镜像攻击
因为镜像攻击的反代是很及时的,原网站的内容就是反代后网站的内容
攻击原理
-
攻击者搭建服务器:攻击者首先会注册一个或多个域名,并设置一台服务器
-
配置反向代理:在这台服务器上,攻击者会使用像 Nginx、Apache 或 Caddy 这样的软件(攻击本网站的网站就使用了 Nginx)配置一个反向代理 (Reverse Proxy),这个代理的目标就是这个网站
-
实时抓取与呈现:
- 当一个用户访问攻击者的假冒域名 (例如 srsg.clbug.com),请求会被发到攻击者的服务器
- 攻击者的服务器并不存储本网站的任何内容。相反,它会立即向我们的真实服务器(例如 kungal.com) 发送一个一模一样的请求,来获取页面内容(HTML、CSS、JavaScript、图片等)
- 我们的服务器收到请求后,会把正常内容返回给攻击者的服务器
- 攻击者的服务器在收到内容后,可能会进行二次处理(比如我们现在遇到的在页面中插入攻击者的广告来盈利,甚至可能还会插入攻击代码来试图获取你的真实信息)
- 最后,攻击者的服务器将处理过的内容发送给用户
从用户的角度看,访问了 srsg.clbug.com, 然而看到的却是 kungal.com 的内容
与此同时,网站上面却相比 kungal.com 多了攻击者植入的广告,整个过程是动态、实时的,我们更新了网站,镜像站也会瞬间同步更新
镜像攻击与普通 “爬虫/抄袭” 是有区别的
- 抄袭是静态的,对方把你的文章复制粘贴到他的网站上,是一次性行为。
- 镜像是动态的,对方不存储内容,而是建立了一个实时通道,你网站的任何变动都会实时反映在镜像站上。
危害分析
镜像攻击的危害是多方面的,而且非常严重,其中 SEO 损失是最核心、最直接、最严重的危害
搜索引擎(如 Google、Bing)非常抵制重复内容,所以当它发现互联网上有两个一模一样的网站时,它的算法会感到困惑,不知道哪一个才是真正的网站,这可能会导致几个问题
- 搜索结果排名问题。攻击者的网站会蚕食本该属于本网站的搜索结果排名
- 正版被误判。在最坏的情况下,如果镜像站的权重因为某些更加恶劣的手段被搜索引擎误判得更高,我们的网站反而可能被认为是抄袭者,导致我们的 SEO 排名暴跌,甚至被搜索引擎下架(从搜索结果中移除,K 站)
想象一下,我们的网站是开源、无广告、无门槛的,然而搜索出来的却是一个堪比垃圾场的仿冒网站,这实在是有点严重
除此之外还有用户体验下降(网站都是广告)、信誉损失(对方可能植入非法的色情、赌博内容)、服务器资源消耗(镜像站的每一次访问,都意味着攻击者的服务器要向我们的服务器请求一次数据)等等
对于我们网站来说,最需要关心的可能还有安全性问题,比如上面提到的植入恶意链接,植入恶意脚本等等
解决教程
要解决这个问题,对于服务器方面的解决方案,有一个重要的前提可能是知道对方的 IP 地址,这里有一个简单的办法来判断对方用来代理的服务器 IP 地址
那就是使用压测技术测试一下对方网站的 API,于此同时可以查看本地服务器的请求日志,很轻松就能找到对方的源 IP 了
这里,我们特此对镜像攻击提出下面五点重要的解决措施
CDN / WAF
这是最强大最有效的解决方案,我们的网站目前用了 Cloudflare,所以将用 Cloudflare Dashboard 举例(本文编写的时间是 23/06/2025,Cloudflare 经常更新,因此本文的时效可能是三年左右),如果您使用其它的服务提供商,部署的原理是一样的
首先进入 kungal.com/Security rules/Overview
页面(旧版这里叫 WAF),点击 Create rule
按钮,选择 Custom rules
点击 Edit expression
,填写下面的内容(根据自己实际情况改写),然后点击 Use expression builder
(ip.src in {43.160.207.233 8.217.91.240 47.88.92.64 106.52.201.59})
现在这个网站不是这个 IP 了,改成 43.160.254.228 了
最后点击
Deploy
即可应用这条规则
由于这里我们已经得知了 srsg.clbug.com 的服务器源 ip 了,因此可以进行比较根本的防范,如果不知道,则需要通过其他手段来限制请求,比如
- 开启
Bot Fight Mode
,这应该能自动识别并拦截大部分非法的爬虫和代理请求 - Cloudflare 有一个专门的功能叫
Scrape Shield
,可以自动混淆邮件地址、开启热链接保护,保护网站的内容不被轻易抓取 - 启一个速率限制规则,限制对方调用网站 API 的速率,因为流量不是那么大的网站阻止镜像收益也不是很大
部署过后按道理来说对方的网站已经不能反代你的网站了,如果还是可以反代,那么接着看下面的手段
在 Web Server 层面屏蔽对方的 ip
如果使用了 Nginx,Caddy 等技术部署网站,那么可以配置一下规则来拦截来自这个 IP 的请求,例如可以在 nginx.conf
中添加
deny 43.160.207.233;
如果您和我们一样,使用了 PM2 来部署,但是直接用 Cloudflare Tunnel 部署了网站,再套一层 Nginx 太多余了,不想使用,那么还有下面这个更加直接的手段
在网站源码层面阻止对方
这要求您有一定的编程基础,对您自己网站的框架和技术栈较为熟悉才可以
我们的论坛完全是我们自己开发的,用了目前最新的 Nuxt 编写,要做到这一点简直简单到不能再简单,我们现在就是采用的这种方法限制对方的
这里我们仅举例 Nuxt 阻止镜像攻击的手段,如果您使用其它框架,原理都是相似的
我们创建 /plugins/domainChecker.ts
文件,注意,不要创建 middleware
,因为 middleware 需要在 pages 中引入,不适合全局使用
/plugins/domainChecker.ts
import { kungal } from '~/config/kungal'
export default defineNuxtPlugin(async () => {
if (!window) return
// const KUN_SITE_VALID_DOMAIN_LIST = ['www.kungal.com', 'www.kungal.org']
// 这个 KUN_SITE_VALID_DOMAIN_LIST 就是 kungal.validDomain
const legitimateDomains = kungal.validDomain
const currentHostname = window.location.hostname
const isProduction = process.env.NODE_ENV === 'production'
if (isProduction && !legitimateDomains.includes(currentHostname)) {
await navigateTo(
`https://${legitimateDomains[0]}${window.location.pathname}${window.location.search}`,
{ external: true }
)
}
})
好了,现在部署一下网站,效果已经完全达到了,用户访问攻击者的网站时会被跳转回 kungal.com
举报对方
直接联系 Google 和 Bing 即可,我们直接根据 DMCA 来诉讼对方的网站,甚至可以根据对方的服务商来向服务商举报
比如向 Google 举报网站违规,我们可以进入这里 https://www.google.com/webmasters/tools/spamreport?hl=en (如果这不是您要举报的内容,可以在这里选择)
进入之后点击 Report spam
,填写 Page URL
,类型选择 Others
,然后填写内容提交即可
Bing 需要进入 Bing Webmasters Tools
,点击 Help
,点击 Bing Webmaster Support
,然后选择对应的类型提交即可
这里有一封参考的邮件,让我们感谢鸡米妮
Subject: DMCA Takedown Notice for Copyright Infringement by srsg.clbug.com
To:
The Google Legal Support Team
The Microsoft/Bing Legal Support Team1. Identification of the Copyrighted Work:
I am the owner and operator of the website kungal.com. The copyrighted work that has been infringed is the entirety of my original content on this website, including but not limited to: all articles, text, original images, layout, design, and HTML/CSS/JS code.
My entire website, which is my original intellectual property, is located at:
https://www.kungal.com2. Identification of the Infringing Material:
The infringing material is a "mirror site" or "reverse proxy" that is illegally reproducing my entire website in real-time without permission, for the purpose of commercial gain through advertising.
The root URL of the infringing website is:
httpss://srsg.clbug.comThis website copies every page of my site. For example:
- My Original Work: https://www.kungal.com/
- Infringing Copy: https://srsg.clbug.com/
- My Original Work: https://www.kungal.com/topic
- Infringing Copy: https://srsg.clbug.com/topic
- My Original Work: https://www.kungal.com/galgame/15
- Infringing Copy: https://srsg.clbug.com/galgame/15
The entire domain srsg.clbug.com and all sub-pages under it are direct, unauthorized copies of my content from kungal.com. I request the complete removal of all URLs associated with srsg.clbug.com from your search index.
3. Copyright Holder's Contact Information:
My contact information is as follows:
- Full Name: Kun Moe
- Mailing Address: Houston, TX, 3553 Payne Street, 77042
- Email Address: [email protected]
- Phone Number: +1 7777777777
4. Statements of Good Faith and Accuracy:
I have a good faith belief that the use of the copyrighted material described above in the manner complained of is not authorized by the copyright owner, its agent, or the law. The infringing website is using a reverse proxy to steal my content and bandwidth for their own commercial benefit.
I swear, under penalty of perjury, that the information in this notification is accurate and that I am the copyright owner and am authorized to act on behalf of the owner of an exclusive right that is allegedly infringed.
5. Signature:
Electronic Signature:
Kun Moe
终极手段
当以上手段都没有起到效果时,我们还可以采用一种最为雷霆的手段,这种手段相信大家都知道,就是直接攻击这个镜像网站
对方做镜像必然会暴露 IP 地址,那么我们输出的对象简直非常的明确
我们不是黑客,提到这个方法只是告诉大家存在这么一种最为强大最为彻底最为快速的解决方案,具体如何实施我们暂时不谈
防范措施
上面我们已经讲述完了解决方案,我们这里提一下防范措施,镜像攻击是可以被防范的
Canonical 标签
在每个页面的 <head>
部分,务必包含一个 rel="canonical"
标签,明确指向该页面的官方 URL,例如
<link rel="canonical" href="https://www.kungal.com/">
这等于在向搜索引擎郑重声明,只有这个 URL 才是正版网站,其他都是抄袭网站,这是应对重复内容问题的最重要 SEO 措施
对于 Nuxt 来说,我们可以用 useHead
非常简单的做到这一点
useHead({
link: [
{
rel: 'canonical',
href: `${kungal.domain.main}/galgame`
}
]
})
这样就会在页面的 head 生成一个 canonical
tag 了
发告知声明
就像本文一样,可以在网站显眼的地方展示网站官方的 URL,以免不知道的用户被骗,例如
鲲 Galgame 论坛的官方网站目前只有两个
除了这两个网站之外的,和本论坛一模一样的网站,都是假冒伪劣网站,千万不要访问,更不要登陆
做到了上面提到的所有的点,我们认为已经足以对抗大部分的镜像攻击了
如果您对 Web 开发或者任何对任何计算机技术感兴趣,欢迎加入我们的 Telegram 开发群组: https://t.me/KUNForum