事情得从几个月前说起,我手里有一个运营了两年多的企业站,权重稳定在3左右,日访客大概2000上下。某天例行巡检Search Console的时候,发现外链数量突然暴涨,从原本的3000多条一下子蹿到了将近5万条。点进去一看,全是各种色情、赌博、灰色词站的链接,锚文本乱七八糟,什么“小姐上门”“真人视讯”全来了。
我当时心里一沉,知道这是被垃圾外链攻击了。
这类攻击在圈子里叫“负面SEO”,攻击者用工具批量在低质量站点、站群、镜像站上生成指向你网站的链接,目的就是让搜索引擎认为你在作弊,从而触发算法惩罚。轻则关键词排名下滑,重则直接被K站。
我先做的第一件事,是判断这些垃圾外链到底有没有造成实质伤害。查了流量曲线,发现核心关键词排名暂时没掉,但几个长尾词开始波动。这说明百度已经部分识别了这些异常外链,但还没有完全判定为作弊。这时候必须立刻动手处理,拖得越久风险越大。
**防御垃圾外链的核心逻辑其实就两条:一是阻断来源,二是主动告知搜索引擎哪些链接与你无关。**
下面是我实际操作下来最有效的几个方法,按优先级排序。
### 一、拒绝链接工具——最直接的硬手段
百度站长平台(现在叫百度搜索资源平台)提供了“拒绝链接”功能,这是目前唯一官方认可的主动防御手段。它的原理是你提交一个域名列表或链接列表,告诉百度“这些链接不是我做的,别算在我头上”。
操作路径如下:
1. 登录百度搜索资源平台,进入“站点管理”
2. 左侧导航栏找到“优化与维护”下的“拒绝链接”
3. 点击“创建拒绝列表”
这里有一个关键细节:拒绝链接支持两种格式,一种是按域名拒绝,一种是按具体URL拒绝。**我强烈建议优先使用域名拒绝**,因为垃圾外链通常来自整站都是垃圾的域名,你拒绝整个域名比一条条拒绝URL效率高得多。
文件格式要求是TXT,每行一个域名或URL,编码必须用UTF-8。举个例子:
```
sex-gambling-site1.com
spam-domain2.cc
cheap-pills-online.net
```
上传后系统会校验格式,通过后即时生效。根据官方说明,这个拒绝列表会在百度抓取外链时作为参考,被拒绝的链接将不参与权重计算。
我那次处理时,从Search Console导出了全部外链数据,用Excel筛选出明显异常的域名,去重后整理成拒绝列表,一次性提交了大概600多个域名。提交后大概两周左右,Search Console里这些垃圾域名的展示量开始明显下降。
**但拒绝链接有两个局限需要注意:**
第一,每个站点最多只能提交一定数量的拒绝条目,如果攻击规模特别大,可能会不够用。这时候就需要配合域名级别的通配拒绝,优先封掉那些链接数量最多的主域名。
第二,拒绝链接是“事后补救”,不能阻止新的垃圾外链产生。所以它必须和其他方法配合使用。
### 二、主动监控外链变化——不看不等于不存在
很多人觉得只要排名没掉就不用管外链,这个想法很危险。百度算法对垃圾外链的识别有延迟,等你看到排名掉了再处理,恢复周期至少按月计算。
我现在的做法是固定每周一查看一次Search Console的“链接”报告,重点关注几个指标:
| 监控指标 | 正常范围 | 异常信号 | 应对动作 |
|---------|---------|---------|---------|
| 外链总数周增幅 | 5%以内 | 单周增长超过20% | 立即导出新增外链排查 |
| 引用域名数 | 平稳或缓慢增长 | 单周新增超过50个域名 | 检查新增域名质量 |
| 锚文本分布 | 品牌词/行业词为主 | 出现大量无关锚文本 | 针对性拒绝相关域名 |
| 顶级域名分布 | .com/.cn/.net为主 | 出现大量.tk/.ml/.ga等免费域名 | 这类域名基本全是垃圾,批量拒绝 |
这个监控习惯帮我挡掉了至少三次垃圾外链攻击。有一次是周六晚上发现的异常,周日就提交了拒绝列表,周一上班时外链增长已经被遏制,排名纹丝未动。
**工具层面**,除了百度自家的Search Console,我还用Ahrefs和SEMrush做交叉验证。百度的外链数据更新比较慢,第三方工具能更早发现异常。不过第三方工具的数据百度不认,只能用来做预警,最终处理还得回到百度平台。
### 三、服务器层面的主动拦截——从源头掐断
这个方法知道的人不多,但效果立竿见影。垃圾外链的生成通常依赖自动化工具,这些工具会频繁抓取你的网站页面来获取链接目标。通过分析服务器日志,可以识别出这些爬虫的特征,直接在Nginx或Apache层面封掉。
具体操作步骤:
**第一步,分析日志找特征。** 垃圾外链工具通常有明显的User-Agent特征或者固定的IP段。用以下命令可以快速统计访问频率异常的IP:
```bash
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -50
```
**第二步,识别恶意爬虫。** 重点看那些短时间内请求大量页面、但几乎不加载CSS/JS/图片的IP。正常用户访问会连带加载静态资源,爬虫往往只抓HTML。
**第三步,配置封禁规则。** 在Nginx配置中添加:
```nginx
# 封禁特定User-Agent
if ($http_user_agent ~* (spamBot|scraper|curl|python-requests)) {
return 403;
}
# 封禁特定IP段
deny 192.168.1.0/24;
deny 10.0.0.0/8;
```
这里要特别注意,封IP段的时候务必确认不是正常搜索引擎爬虫的IP。百度和Google都有公开的爬虫IP范围,千万别误封了。百度蜘蛛的IP可以通过搜索资源平台的“抓取诊断”工具反查验证。
**第四步,配置频率限制。** 更精细的做法是用Nginx的limit_req模块限制单IP的请求频率:
```nginx
limit_req_zone $binary_remote_addr zone=spam_limit:10m rate=5r/s;
location / {
limit_req zone=spam_limit burst=10 nodelay;
}
```
这样设置后,单个IP每秒超过5次请求就会被暂时拒绝,能有效拖慢垃圾外链工具的生成速度。很多自动化工具遇到请求失败会直接跳过,转而攻击其他目标。
### 四、内容层面的防御——让垃圾外链失去附着点
垃圾外链要起作用,必须指向你网站上真实存在的页面。如果你的网站存在大量低质量页面、空页面、或者URL参数处理不当导致的无限生成页面,那攻击者就有大量的“附着面”。
这方面我踩过坑。早些年我的站用了某个CMS的默认配置,URL参数没有做规范化处理,导致同一个页面可以通过`?page=1`、`?page=1&sort=asc`、`?page=1&sort=asc&filter=all`等无数种参数组合访问,每种组合搜索引擎都会当成独立页面索引。攻击者发现后,用工具生成了上万个带不同参数的URL变体,然后批量给这些URL做外链。
修复方案是三个动作:
1. **URL规范化**:在页面head部分添加canonical标签,明确告诉搜索引擎哪个URL是标准版本
2. **无效参数301重定向**:对于不影响页面内容的参数,直接在服务器端做301跳转到标准URL
3. **robots.txt限制**:禁止搜索引擎抓取带有特定参数的URL
robots.txt的配置示例:
```
User-agent: Baiduspider
Disallow: /*?sort=*
Disallow: /*?filter=*
Disallow: /*?utm_source=*
```
这个配置告诉百度蜘蛛不要抓取任何包含sort、filter、utm_source参数的URL。从根源上减少了可能被垃圾外链利用的页面数量。
### 五、主动提交与站点加固——提高搜索引擎的判断准确度
垃圾外链之所以能造成伤害,本质上是因为搜索引擎无法100%准确判断一个外链是你自己做的还是别人恶意做的。我们能做的是提供更多正面信号,帮助搜索引擎建立更准确的站点画像。
**第一个有效操作是主动提交高质量外链来源。** 百度搜索资源平台有“外链分析”功能,虽然不能直接标记哪些是好外链,但你可以通过持续建设高质量外链来稀释垃圾外链的比例。当你的外链构成中,正规行业网站、新闻源、合作伙伴网站的占比足够高时,偶尔出现的垃圾外链对整体判断的影响就会变小。
**第二个操作是保持站点内容更新频率稳定。** 我发现一个规律:内容更新稳定的站点,对垃圾外链的“免疫力”明显更强。推测是因为持续的内容更新让搜索引擎对站点的主题和定位有更清晰的认知,异常外链与站点主题的偏离度就更容易被算法识别。
**第三个操作是开启站点认证。** 在百度搜索资源平台完成站点认证、提交ICP备案信息、绑定站长身份,这些操作虽然不能直接防御垃圾外链,但能提高站点在搜索引擎眼中的可信度。一个经过完整认证的站点,算法在处理异常信号时会更加谨慎,不会轻易判定为作弊。
### 六、处理已有垃圾外链的完整流程
如果发现网站已经被大量垃圾外链攻击,按照以下顺序处理:
1. **导出全部外链数据**,从Search Console和第三方工具各导出一份,交叉对比
2. **分类标记**,将外链域名分为“正常”“可疑”“确定垃圾”三类。不确定的先归为可疑
3. **优先处理确定垃圾**,整理域名列表,提交拒绝链接工具
4. **排查站点漏洞**,检查是否存在URL参数滥用、页面无限生成等问题,有的话立即修复
5. **服务器端部署拦截**,根据日志分析结果封禁恶意爬虫IP和UA
6. **持续监控两周**,观察外链增长趋势是否回归正常
7. **如果排名已经受影响**,同步进行内容质量提升和外链建设,加速恢复
整个流程走下来,轻度的垃圾外链攻击一般两周内能控制住,重度的可能需要一到两个月才能完全消化。
说到底,防御垃圾外链不是一次性操作,而是一个需要持续投入的维护工作。把监控频率固定下来,把拒绝列表持续更新,把服务器规则维护好,这些措施组合起来,基本能把垃圾外链的影响控制在可忽略的范围内。

