辛辛苦苦写的原创内容,某天发现另一个域名里一字的你的站一模一样,连广告位和统计代码都没动——这就是被镜像了。网站被镜像简单说就是有人把你的整站内容原样搬到了别的域名下,靠你的内容吃搜索引擎流量,甚至抢你的排名。识别清楚再动手,反制才有用。
一、怎么识别被镜像
镜像站有几个明显特征:页面内容和你完全一致,连错别字都一样;域名不同但栏目结构、文章 URL 几乎复制;它页面里还保留着你的统计代码、联盟广告或站长工具标签,等于自己留下了证据;有时它的更新时间比你还早,因为镜像程序是定时抓取、实时同步,你一发它就搬。确认办法有两个:用搜索引擎搜你某篇原创的特有句子,看有没有别的域名排在前面;直接访问疑似域名,对比正文和你的站是否一字不差。下面这段把你的页面和疑似镜像页拉来比相似度,超过 0.9 基本就能认定是镜像。
# 对比你的页面和疑似镜像页的文本相似度,确认是否整站镜像
import urllib.request, difflib
SELF = "https://www.example.com/post/1.html"
MIRROR = "https://mirror.example.com/post/1.html" # 改成疑似镜像地址
def fetch(u):
req = urllib.request.Request(u, headers={"User-Agent": "Mozilla/5.0"})
return urllib.request.urlopen(req, timeout=10).read().decode("utf-8", "ignore")
a, b = fetch(SELF), fetch(MIRROR)
ratio = difflib.SequenceMatcher(None, a, b).ratio()
print("文本相似度: %.2f" % ratio)
print("超过 0.9 基本可认定是镜像站" if ratio > 0.9 else "相似度不高,可能不是镜像")
二、镜像的代价比你想的大
有人觉得“他搬就搬,反正内容是我写的”,这是误解。镜像站会稀释你的权重:同一个内容出现两个地址,搜索引擎要判原创归属,判错你就白干;镜像站如果服务器更快、被先抓取,排名可能反超你;更糟的是对方可能往镜像页里塞赌博、色情链接,连累你的品牌被标记。所以镜像不能放着不管。
三、反制手段按成本从低到高
第一招,加 canonical 标签。在你每页的 head 里加上 canonical 标签、href 指向你的原始地址,告诉搜索引擎“正宗页面在这里”。但这招有个弱点:镜像程序如果故意把 canonical 删了就失效,所以要配合第二招。第二招,JS 域名校验:在公共头部加一段脚本,发现页面不在你自己的域名下就跳回源站,这样镜像页一打开就被弹回你的站,搜索引擎抓到的也是跳转,自然不会收录它。第三招,Nginx 层拦截:如果对方是把他的域名 A 记录直接指向你的服务器,你可以在配置里对非本站域名的请求直接断开。下面这段加进站点 server 块,把 server_name 和 host 正则改成你自己的域名即可,效果是对方域名访问直接返回 444(连接被关),什么都抓不到。
# Nginx 站点配置:非本站域名的请求直接断开,防止别人把域名指向你的服务器做镜像
server {
listen 80;
listen 443 ssl;
server_name example.com www.example.com;
# 把下面正则里的域名改成你自己的
if ($host !~* ^(example\.com|www\.example\.com)$) {
return 444;
}
# 其余正常配置放这里
root /www/example.com;
index index.php index.html;
}
第四招,向搜索引擎投诉。把镜像证据(相似度截图、它页面里你独有的统计代码)整理好,在站长平台提交“内容抄袭/镜像”反馈,要求处理镜像域名。第四招对镜像域名的流量来源也有用:在 robots 里对镜像域名禁止抓取(虽然镜像站不一定遵守,但作为证据链的一环有用)。这几招叠加,镜像站基本拿不到流量。
四、证据留存与申诉节奏
反制不是一次投诉就完事。把疑似镜像域名、它页面里你独有的代码截图、相似度报告存一份证据包,每隔一段时间复查对方是否换域名继续镜像。申诉要带齐证据,含糊一句“他抄我”平台不会处理;证据越硬,处理越快。原创内容是你的资产,被镜像就按上面的顺序一步步反制,别等排名掉了才着急。
相关阅读:
A5创业网 版权所有