本文约 3,666 字,预计阅读 10 分钟。文中命令与配置均经过实测,可直接参考执行。
引言:买来的不只是链接,还有风险
外链交易的形式一直在变:早年是论坛群发,后来是「高权重包月友链」,现在是「新闻源软文投放」「资源站内容合作」。它们披着不同的外衣,但核心特征一致——以金钱换取指向你站点的链接。百度的绿萝算法针对的正是这类行为,判定命中后的处理通常是限制收录、削弱链接计算,严重的会整站降权。真正危险的是另一类情况:你没买链接,但站点被入侵后植入了隐藏外链(俗称黑链),或者你买的某个「内容合作」套餐里,对方把链接埋在了几十个采集站的页脚。这两种情况下你未必知情,风险却同样落在你身上。所以除了不买,还要会查。
原理分析:百度如何识别外链交易
百度的识别不靠「是否付了钱」(它看不到交易记录),而是靠链接模式的异常特征:锚文本高度集中于商业词、来源站点之间同 IP 段或同模板或同备案主体、链接集中出现在页脚或全站侧栏而非正文、短期内批量增长、链接内容与页面主题无关、来源站点本身质量低。这些特征叠加起来,就构成了「非自然链接」的判断。
| 交易形式 | 典型特征 | 风险等级 | 备注 |
|---|---|---|---|
| 包月友链(明链) | 页脚大量出售位、锚文本统一 | 高 | 最易识别 |
| 全站侧栏链接 | 对方每个页面都有你的链接 | 高 | 模式极不自然 |
| 软文/新闻源投放 | 正文内链接、内容相关 | 中 | 需区分是否带 rel |
| 链接农场互链 | 同 IP 段、同模板站群 | 极高 | 牵连整批站点 |
| 隐藏黑链(被入侵) | 页面不可见、CSS 隐藏 | 极高 | 你可能是受害者 |
| 内容合作/资源置换 | 内容真实、链接少量 | 低 | 相对安全 |
一个关键认知:百度的处理对象通常不只是「买链接的站点」,也包括「卖链接的站点」。如果你的站点页面上出现大量出售链接的痕迹(比如页脚挂着「友链合作 QQ」加上几十个不相干的商业锚文本),即便这些链接是别人买的,你的站点也会被降级为链接农场。
保姆级实操
步骤 1:自查站点是否被植入隐藏外链。 被入侵的站点常把外链插进 wp_posts 正文或主题文件里,用 CSS 隐藏。先从数据库查那些「看不见的链接」:
-- 查找正文里带 display:none / 极小字号 / 屏幕外定位的 <a> 标签
SELECT ID, post_title, post_date
FROM wp_posts
WHERE post_status = 'publish'
AND (
post_content REGEXP '<a[^>]+style="[^"]*(display:\\s*none|font-size:\\s*0|left:\\s*-[0-9]+px)'
OR post_content REGEXP '<a[^>]+class="[^"]*(hidden|hide|dn)"'
)
LIMIT 100;
步骤 2:统计正文里的出站链接域名分布。 正常内容站的外链是零散的;如果某几个陌生域名在几十篇文章里反复出现,就要重点核查:
SELECT
SUBSTRING_INDEX(
SUBSTRING_INDEX(post_content, 'href="http', -1), '/', 3
) AS raw_host,
COUNT(*) AS hit_count
FROM wp_posts
WHERE post_status = 'publish'
AND post_content LIKE '%href="http%'
GROUP BY raw_host
HAVING hit_count > 5
ORDER BY hit_count DESC
LIMIT 30;
步骤 3:扫描主题与插件文件里的硬编码链接。 数据库干净不代表文件干净,入侵者常改 footer.php 或 functions.php:
THEME_DIR=/var/www/html/wp-content/themes
# 找出模板里所有出站 <a>,人工核查是否属于自己添加
grep -rn --include='*.php' -o '<a[^>]*href="https\?://[^"]*"' "$THEME_DIR" \
| grep -v 'mimangfei.com' \
| sort | uniq -c | sort -rn | head -30
# 特别留意被 CSS 隐藏的输出
grep -rn --include='*.php' -E 'display\s*:\s*none|visibility\s*:\s*hidden|font-size\s*:\s*0' "$THEME_DIR" | head -20
步骤 4:检查自己的站点有没有「卖链接」的痕迹。 打开页脚与侧栏,数一数有多少个与站点主题无关的商业锚文本。超过十个、且这些站点彼此毫无关联的,基本会被判定为链接农场,应尽快清理。
步骤 5:如果已经买过,怎么收尾。 立即停止续费,让链接自然失效优于批量删除(避免结构突变);把锚文本过于集中的部分请对方改成品牌词或裸 URL;保留真正有内容相关性的投放,并确认它们带 rel="nofollow" 或标记为赞助。
add_filter( 'the_content', function ( $content ) {
$paid_domains = [ 'sponsor-example.com', 'ad-example.com' ];
return preg_replace_callback(
'#<a([^>]*)href="(https?://[^"]+)"([^>]*)>#i',
function ( $m ) use ( $paid_domains ) {
$host = wp_parse_url( $m[2], PHP_URL_HOST );
$host = preg_replace( '/^www\./', '', (string) $host );
if ( ! in_array( $host, $paid_domains, true ) ) {
return $m[0];
}
$attrs = preg_replace( '/\srel="[^"]*"/i', '', $m[1] . ' ' . $m[3] );
return sprintf( '<a%shref="%s" rel="sponsored nofollow">', $attrs, $m[2] );
},
$content
);
}, 20 );
步骤 6:建立长期监控。 每月跑一次步骤 1–3,尤其是有写权限的人较多的站点;同时开启文件完整性监控,主题目录出现未预期的改动就告警。
常见踩坑
- 认为「买了没人知道」,忽略了来源站点的同 IP、同模板、同备案信息是可被关联的。
- 案例: 某站买了二十条「高权重包月友链」,其中十几个站点属于同一套站群(同模板、同 IP 段、备案主体相同),两个月后这批站点被集体清理,该站索引量从 6800 掉到 2100,清理链接后恢复用了五个多月,直接损失超过一年的收入。
- 只看数据库,漏掉了被改动的
footer.php,隐藏链接一直在输出。 - 站点被入侵植入黑链,只删了可见部分,后门文件还在,两周后又被重新植入。
- 认为「我不买就没事」,但自己的页脚长期挂着几十条出售的友链,同样被判定为链接农场。
- 清理时一次性删除全部出站链接,出站结构突变,反而引起算法注意。
- 用
nofollow就以为万事大吉,但来源站点本身是站群,关联风险依然存在。
总结
判断一条链接是否有风险,看三个特征:锚文本是否集中在商业词、来源站点是否成批同构、链接位置是否在页脚/全站侧栏而非正文。三者占其二就该放弃。行动清单:SQL 查隐藏外链 → 统计正文外链域名分布 → 扫描主题文件硬编码链接 → 清理页脚出售位 → 已购链接停止续费并改锚文本 → 每月例行自查。真正安全的外链只能来自「内容值得被引用」,这一条至今没有捷径。外链作用的真实情况见 外链对百度排名的作用现状,友链相关的风险排查见 被友链牵连降权的排查。
