Google Search Console里明明显示有1300条外链,为什么Ahrefs只抓到89条,SEMrush更离谱只有32条?百度站长平台的链接分析和爱站网的数据差了快10倍,到底该信谁的?同一条外链在不同工具里DA值能从20跳到65,你花800块钱买了一条DR70的外链,换了台电脑查发现对方把nofollow藏在了JS动态加载里——这十几个外链检测工具之间的数据差距,是真有那么多外链没被抓到,还是工具本身抓取策略的差异?
先说结论
外链检测工具的底层逻辑完全不同,这是数据差距的根源。Google Search Console和百度站长平台用的是搜索引擎自己的索引库——Google抓了全网多少万亿页面它就记录了多少外链,但只展示抽样数据(GSC一般显示500-2000条样本),且不提供外链质量指标。Ahrefs、SEMrush、Moz这些第三方工具靠自己的爬虫建索引,Ahrefs的爬虫规模仅次于Google和Bing,所以它的外链数据库是第三方里最大的,但它也爬不到所有页面。中文站的外链数据,百度和爱站更全但质量指标粗糙。所以说穿了,没有哪个工具能抓到所有外链,你能做的就是同时查两三个工具交叉验证——用GSC看"搜索引擎视角有多少外链",用Ahrefs看"这些外链的质量如何",用百度站长平台看"百度眼里你的外链什么样"。
外链检测工具到底在检测什么
名字都叫"外链检测",但实际上不同的工具给出的数据维度完全不同。有些只能告诉你"有没有这条链接",有些能告诉你"这条链接值多少钱",有些能告诉你"这条链接是不是有毒"。先搞清楚你要查什么:
外链数量与来源
哪些域名链向了你?有多少条?哪些页面被链得最多?这是最基础的检测,所有工具都能做,但数据量差异巨大。
外链质量评估
链接页面的权威性(DA/DR)、是否dofollow、锚文本分布、链接位置(正文还是侧栏/页脚)。这是区分工具档次的核心维度。
垃圾外链识别

哪些链接来自垃圾站、链接农场、色情/赌博站?有没有被负SEO攻击?这决定了你要不要用disavow工具拒绝这些链接。
十款外链检测工具,按数据源分四类
同一个网站,在不同工具里查出来的外链数量可以从几十条到几万条。这不是工具"准不准"的问题,是它们的底层数据库和抓取策略完全不同。搞清楚每款工具的数据从哪来,你就知道该信哪个了。
第一类:搜索引擎官方工具(数据来自搜索引擎本身,最权威)
第二类:第三方商业工具(自建爬虫索引,质量评估最强)
第三类:免费/轻量工具(快速查看,数据有限)
为什么同一个站在不同工具里外链数差10倍
这是99%的人第一次用外链工具时都会困惑的问题。GSC显示1300条、Ahrefs显示89条、SEMrush显示32条——到底哪边是对的?答案是:都对,也都不对。
GSC显示1300条,Ahrefs只抓到89条的原因
GSC用的是Google的全网索引——Googlebot爬过的每一张网页,只要上面有链向你的链接,GSC都知道。但Ahrefs靠自己的爬虫建索引,它只会去爬"它认为值得爬的页面"。那些DA=0的小博客、论坛签名、评论区外链,Googlebot爬了但Ahrefs的爬虫根本不会去。所以GSC的1300条里可能有1200条是低质量链接,而Ahrefs抓到的89条都是相对高质量的。这也是为什么Ahrefs的外链数虽然少,但用来分析外链质量更靠谱。
中文站外链数据:百度站长平台 > 爱站 > Ahrefs > SEMrush
如果你的站主要面向中文用户、外链也来自中文网站,那Ahrefs和SEMrush的外链数据会严重偏低——它们的爬虫对中文网站的覆盖远不如英文站。中文站的外链分析首选百度搜索资源平台的"链接分析"功能,数据来自百度爬虫的索引。但百度只提供数量,不提供质量评分,所以你需要用爱站或5118做补充。
DR、DA、TF、CF这些指标到底什么意思
打开任何一个外链检测工具,满屏的缩写:DR、DA、UR、PA、TF、CF、AS。这些是外链质量的量化指标,但每个工具的计算方式不一样,同一条外链在不同工具里的分数可能差一倍。
最容易被坑的一点

DR/DA高不代表这条外链真的有用。一个DR70的站把你的链接放在全站侧栏的几百条友情链接里,这条链接的实际权重接近于零。更要命的是,有些站故意把nofollow写在JS动态加载的属性里——浏览器渲染后才有nofollow,纯HTML抓取看不到。所以你用工具看到的是dofollow,实际上Googlebot执行JS后看到的是nofollow。怎么判断?在浏览器里打开那个页面,右键检查元素,搜索你的链接,看rel属性里有没有nofollow。不要只看工具的报告。
垃圾外链怎么识别和处理
外链不是越多越好。2012年企鹅算法之后,垃圾外链会直接拖累排名。2026年百度飓风3.0同样会打击外链作弊。定期做外链审计,清理垃圾外链,和外链建设一样重要。
什么样的外链算"垃圾外链"
特征:网站没有任何实质内容,全是密密麻麻的链接列表。域名通常很新(<6个月),页面设计粗糙或用的默认模板。
你的站做软件开发,外链来自一个卖减肥药的站。这种跨行业链接在搜索引擎眼里极其可疑。
你的中文站突然冒出几百条俄语、阿拉伯语论坛的外链。典型的负SEO攻击——竞争对手给你灌垃圾外链想拉低你排名。
你的链接出现在某个站的所有页面的侧栏或页脚里。搜索引擎会把这种链接当成付费链接或互惠链接处理,权重极低甚至为负。
外链锚文本里精确匹配关键词的比例超过30%。自然的外链锚文本应该是品牌名、URL、通用词(点击这里)混合的。精确匹配比例过高说明你在操纵锚文本。
Google Disavow 工具实操流程
Google和Bing都提供拒绝外链(Disavow)工具。流程如下:
- 导出外链列表:从GSC + Ahrefs + SEMrush三个来源分别导出外链数据,合并去重。只用一个来源会漏掉大量外链。
- 逐条审核:对每条外链做人工判断——打开来源页面,看内容是否相关、网站是否正常运营、外链位置是否合理。这一步最耗时但最关键,批量disavow可能误伤好链接。
- 先尝试手动删除:对于确定是垃圾的链接,先联系来源站请求删除。Google要求你先做了"reasonable effort"去手动删除,才能用disavow。
- 创建disavow文件:格式为每行一个域名或URL(前面加"domain:"表示拒绝整个域名)。编码UTF-8,文件名随意(如disavow.txt)。
- 提交到Google Disavow Tool:在 https://search.google.com/search-console/disavow-links 上传。注意这是按网站属性(property)提交的,不是按账号。
- 等待生效:Google官方说法是"可能需要几周时间"才能处理完。Disavow不是删除外链,是告诉Google"请忽略这些链接对我的排名影响"。
Disavow的三个使用原则

- 不要预防性disavow:Google的John Mueller多次强调,如果你没有收到人工惩罚通知(Manual Action),就不要用disavow工具。Google的算法已经能自动忽略大部分垃圾外链。
- 不要批量disavow整个域名:除非该域名的所有页面都是垃圾。有时一个好域名下的某个论坛帖子页面确实垃圾,应该disavow URL而不是域名。
- 不要频繁提交:每次提交disavow会覆盖之前的提交。如果你需要加新的垃圾域名,要在旧文件基础上追加,然后重新上传整个文件。
Python脚本:整合GSC + Ahrefs API做外链审计
手动导出三个工具的外链然后合并去重、逐条审核,一个中等规模的站(几百条外链)就要花两三天。下面是用Python自动化这个流程的方案:
import jsonimport csvfrom google.oauth2.credentials import Credentialsfrom googleapiclient.discovery import buildfrom collections import defaultdictclass BacklinkAuditor:# 高风险域名特征(垃圾外链判定规则)TOXIC_PATTERNS = ['forum', 'comment', 'blogspot', 'wordpress.com','linklist', 'directory', 'submit', 'article','free-', 'cheap', '.tk', '.ml', '.ga', '.cf',]def __init__(self, site_url):self.site_url = site_urlself.all_backlinks = []def fetch_gsc_backlinks(self, credentials_json):"""从Google Search Console获取外链数据"""creds = Credentials.from_authorized_user_info(credentials_json)service = build('searchconsole', 'v1', credentials=creds)# GSC外链API每次最多返回1000条,需要分页request = {'startRow': 0,'pageSize': 1000,}while True:response = service.searchanalytics().query(siteUrl=self.site_url, body=request).execute()rows = response.get('rows', [])if not rows:breakfor row in rows:self.all_backlinks.append({'source': 'GSC','from_url': row['keys'][0],'to_url': '',})request['startRow'] += 1000if request['startRow'] >= response.get('totalResults', 0):breakprint(f"GSC: 获取到{len(self.all_backlinks)}条外链")def merge_and_dedupe(self, other_sources):"""合并GSC、Ahrefs CSV、SEMrush CSV等来源的外链数据并去重"""for source_name, filepath in other_sources:with open(filepath, 'r', encoding='utf-8') as f:reader = csv.DictReader(f)for row in reader:self.all_backlinks.append({'source': source_name,'from_url': row.get('Referring Page URL', ''),'dr': int(row.get('Domain Rating', 0)),'traffic': int(row.get('Traffic', 0)),'anchor': row.get('Anchor', ''),'link_type': row.get('Type', ''),})# 按from_url去重,保留质量指标最全的那条seen = {}for bl in self.all_backlinks:key = bl['from_url']if key not in seen or bl.get('dr', 0) > seen[key].get('dr', 0):seen[key] = blself.all_backlinks = list(seen.values())def classify_backlinks(self):"""分类外链:健康/可疑/有毒"""healthy, suspicious, toxic = [], [], []for bl in self.all_backlinks:url_lower = bl['from_url'].lower()dr = bl.get('dr', 0)link_type = bl.get('link_type', '')# 判定逻辑is_toxic_url = any(pattern in url_lower for pattern in self.TOXIC_PATTERNS)is_nofollow = link_type.lower() == 'nofollow'if is_nofollow:suspicious.append(bl) # nofollow外链不传递权重elif is_toxic_url and dr < 20:toxic.append(bl) # 低DR+可疑域名=有毒elif dr >= 20:healthy.append(bl) # DR>=20的外链通常健康else:suspicious.append(bl)return healthy, suspicious, toxicdef generate_disavow_file(self, toxic_links):"""生成Google Disavow格式的拒绝文件"""domains = set()urls = []for bl in toxic_links:from urllib.parse import urlparsedomain = urlparse(bl['from_url']).netlocif domain:domains.add(domain)lines = ['# Disavow文件 - 生成日期: 自动生成']for domain in sorted(domains):lines.append(f"domain:{domain}")disavow_content = '\n'.join(lines)with open('disavow.txt', 'w', encoding='utf-8') as f:f.write(disavow_content)print(f"已生成disavow.txt,包含{len(domains)}个待拒绝域名")return disavow_content
使用方式:先把Ahrefs和SEMrush的外链数据导出为CSV,然后:
auditor = BacklinkAuditor('https://yoursite.com')auditor.fetch_gsc_backlinks(credentials_json)auditor.merge_and_dedupe([('Ahrefs', 'ahrefs_export.csv'),('SEMrush', 'semrush_export.csv'),])healthy, suspicious, toxic = auditor.classify_backlinks()auditor.generate_disavow_file(toxic)
外链监控:不只看现在有多少,还要看新增和丢失
一次性的外链审计只是起点,持续监控才能发现问题和机会:
新增外链(New Backlinks)
每次有新的网站链接到你,都应该检查一下:来源站质量如何?锚文本是什么?如果出现大量不相关域名的新增外链,可能是负SEO攻击的早期信号。Ahrefs和SEMrush都支持设置新增外链的邮件提醒。
丢失外链(Lost Backlinks)
高DR外链突然丢失,是SEO里的红色警报。可能原因:对方页面被删除、对方修改了链接、对方网站被惩罚。发现后应该立即联系对方站长询问原因。丢失一条DR60+的外链,对排名的打击可能比新增10条DR20的外链还大。
失效外链(Broken Backlinks)
外链还在,但你被链的那个页面已经404了。这条外链的权重完全浪费了。解决方案:把旧URL做301重定向到相关的新页面,或者恢复被删的页面。Ahrefs的"Broken Backlinks"报告能直接列出所有失效外链。
六种场景的外链检测工具选型
外链检测这件事,工具只是帮你看到数据,真正有价值的是你对数据的判断。DR70的外链不一定是好外链,DA=0的外链不一定是垃圾外链——打开页面看一眼,比任何工具评分都可靠。每个月做一次外链审计,重点关注新增和丢失的高质量外链,比天天盯着DR数字变化有用得多。最后说一句:不要花800块去买一条DR70的外链然后发现是nofollow的——买之前用至少两个工具交叉查,再打开页面亲自确认rel属性,这三步值回所有外链工具的订阅费。
