收录、权重、蜘蛛抓取的原理,以及可落地的优化清单。
| 章节 | |
|---|---|
| 01 搜索引擎工作原理 | 1 小节 |
| 02 robots 与 sitemap | 2 小节 |
| 03 标题与结构化数据 | 3 小节 |
| 04 蜘蛛 IP 识别 | 2 小节 |
| 05 收录诊断 | 4 小节 |
| 06 外链与权重 | 3 小节 |
搜索引擎干的事分四步,SEO 的每一项优化都能对应到其中一步:
抓取 Crawling → 索引 Indexing → 排序 Ranking → 展现 SERP
蜘蛛能不能 内容值不值得 在候选里排第几 标题摘要好不好看
访问到这个页 存进索引库 (决定点击率)| 阶段 | 关键问题 | 你能做的 |
|---|---|---|
| 抓取 | 蜘蛛发现得了吗?访问得了吗? | sitemap、内链、robots、服务器可用性与速度 |
| 索引 | 内容有价值吗?是重复的吗? | 原创内容、canonical、避免大量模板页 |
| 排序 | 和查询词的相关性、页面质量、站点权威度 | 标题与正文的匹配、结构化数据、外链 |
| 展现 | 用户会点吗? | title、description、富摘要 |
抓取有预算的概念:搜索引擎不会无限制地爬你的站,它按站点规模和质量分配一个大致的抓取额度。所以大量低质页面(无限翻页、排序参数组合、空标签页)不只是没用,它们会挤占真正重要页面的抓取机会。
robots.txt 没禁;noindex;canonical 指明了正主;排查「为什么不收录」就按这个顺序走一遍,绝大多数问题出在前四步,而不是玄学。
一个常被忽略的点:抓取失败不是立刻反映在收录上的。服务器抖一阵,收录量掉可能是两周后的事,所以可用性监控要常态化,用网站连通性检测和批量网站巡检定期扫。
这两个文件是你和蜘蛛之间的正式接口:robots.txt 说哪里别去,sitemap.xml 说哪里值得去。
放在站点根目录,必须是 https://example.com/robots.txt,放别的路径无效。
User-agent: *
Disallow: /admin/
Disallow: /*?sort=
Allow: /admin/help/
User-agent: Baiduspider
Crawl-delay: 2
Sitemap: https://www.ip438.com/sitemap.xml几条必须记住的规则:
Disallow 只阻止抓取,不阻止收录。 被外链指到的页面仍可能出现在结果里(只是没有摘要)。真要不收录,必须让蜘蛛能抓到页面并读到 <meta name="robots" content="noindex">——这两件事是矛盾的,所以别对想 noindex 的页面同时 Disallow。Disallow: /Admin/ 挡不住 /admin/。* 和结尾符 $ 主流引擎都支持,但 Crawl-delay 谷歌不认(它在站长工具里单独设)。Disallow: / 改回来。改完 robots 一定要实际访问一次确认内容。生成用在线网站 robots.txt 文件生成器,改完用 Robots 检测验证某个具体 URL 到底被允许还是被禁。
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://www.ip438.com/</loc>
<lastmod>2026-09-28</lastmod>
<changefreq>daily</changefreq>
<priority>1.0</priority>
</url>
</urlset>要点:
<sitemapindex>)串起来;<loc> 必须是绝对地址、且和 canonical 一致(带不带 www、有没有尾斜杠都要统一),否则等于自己制造重复页;lastmod 要真实,内容没改却天天更新时间,引擎会学会忽略它;changefreq 和 priority 只是建议,实际权重很低,不必纠结;生成用 sitemap.xml 生成,提交入口见网站搜索引擎提交入口。改完顺手校验一下 XML 合不合法:
xmllint --noout public/sitemap.xml && echo OKtitle 是排序和点击率里权重最高的单个元素,写法上有几条经验:
| 要素 | 建议 |
|---|---|
| 长度 | 中文 20–30 字,超了会被截断成省略号 |
| 结构 | 核心词 - 补充说明 - 站点名,核心词靠前 |
| 唯一性 | 每个页面都不一样,模板页堆同一个标题是重复内容的重灾区 |
| 堆砌 | 同一个词重复三四次会被判作弊,反而扣分 |
description 不直接参与排序,但它决定搜索结果里那段摘要好不好看,也就直接决定点击率。80–120 字,把页面能解决的问题说清楚,别写成关键词列表。
<title>IP 地址查询 - 精确到运营商的归属地查询 - ip438查询网</title>
<meta name="description" content="输入 IPv4 / IPv6 地址,查询归属国家、省市、运营商与 ASN 信息,支持批量查询。">
<link rel="canonical" href="https://www.ip438.com/tool/result/">同一份内容有多个 URL 可达时(带参数、带 session、www 与裸域、http 与 https、分页),用 canonical 指明哪个是正主,把权重集中过去。
三个高频错误:
结构化数据让引擎直接读懂页面在讲什么,还能换来富摘要(星级、FAQ 折叠、面包屑)。用 JSON-LD 写最省事,和 HTML 解耦:
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{"@type": "ListItem", "position": 1, "name": "首页", "item": "https://www.ip438.com/"},
{"@type": "ListItem", "position": 2, "name": "技术学院", "item": "https://www.ip438.com/college/"}
]
}常用类型:文章用 Article / TechArticle,问答用 FAQPage,商品用 Product + Offer,导航用 BreadcrumbList,站点搜索框用 WebSite + SearchAction。
铁律:结构化数据里写的东西必须在页面上真实可见。FAQ 结构化里写了页面上根本没有的问答,属于作弊,会被取消富摘要资格。
标签生成用 Meta 标签生成器,写完用 Meta 标签优化分析看长度、重复和关键词密度,HTML 本身有没有写坏用 HTML 标签检测。
日志里满屏的 Baiduspider、Googlebot,其中相当一部分是假的——采集器和刷流量的脚本都爱伪装成蜘蛛,因为很多站会给蜘蛛开绿灯(不限速、不弹验证)。只看 User-Agent 等于没验。
# 1. 反查这个 IP 的域名
dig -x 66.249.66.1 +short
# googlebot.com 或 google.com 结尾才可能是真的
# 2. 再把这个域名正查回来,IP 必须和原来的一致
dig crawl-66-249-66-1.googlebot.com +short两步都对上才是真蜘蛛。只做第一步不行,PTR 记录是 IP 持有者自己填的,可以随便写。
各家的合法域名后缀:
| 蜘蛛 | 反查应得到 |
|---|---|
| Googlebot | .googlebot.com / .google.com |
| Baiduspider | .baidu.com / .baidu.jp |
| Bingbot | .search.msn.com |
| 搜狗 | .sogou.com |
| 字节 | .bytedance.com |
对应的 nginx 片段(只对验证通过的放行,其余按普通访客限速):
map $http_user_agent $maybe_bot {
default 0;
~*(googlebot|baiduspider|bingbot|sogou|yisouspider) 1;
}真正的校验放在应用层做,把结果缓存起来(同一个 IP 一天验一次就够),别每次请求都去 dig。
# 今天各蜘蛛的抓取次数
grep "$(date +%d/%b/%Y)" access.log \
| grep -oiE 'googlebot|baiduspider|bingbot|sogou' \
| sort | uniq -c | sort -rn
# 蜘蛛抓到的非 200 状态,这是最值得看的一张表
awk '$9 != 200 && /Baiduspider/ {print $9, $7}' access.log \
| sort | uniq -c | sort -rn | head -20第二条命令能直接暴露问题:蜘蛛大量拿到 404 说明站内有死链,大量 5xx 说明抓取时服务器在抖,大量 301 说明内链写的是旧地址、白白浪费抓取预算。
各家蜘蛛的 IP 段对照在搜索引擎蜘蛛 IP 地址大全,拿到可疑 IP 想看归属用 IP 地址查询,要判断一整段用 IP 段与 CIDR 互转。
「页面不收录」不是一个问题,是六七个问题的统称。按这个顺序排查,一般三步之内能定位。
各家站长平台(百度搜索资源平台、Google Search Console、Bing 网站管理员工具)都有单 URL 检查功能,直接告诉你抓取状态和排除原因。这是唯一的权威信源,其他都是推断。先在网站搜索引擎提交入口把站提交并验证了。
自己浏览器能打开不代表蜘蛛能。用蜘蛛的 UA 和不带 Cookie 的方式请求一次:
curl -s -o /dev/null -w '%{http_code} %{redirect_url}\n' \
-A 'Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)' \
https://www.ip438.com/college/
# 看返回的 HTML 里到底有没有正文(JS 渲染的站这里会是空壳)
curl -s -A 'Googlebot' https://www.ip438.com/college/ | grep -c '技术学院'高频原因:
| 现象 | 原因 |
|---|---|
| 返回 403 / 503 | WAF 或 IP 黑名单把蜘蛛当攻击挡了 |
| 返回 200 但正文为空 | 前端渲染,蜘蛛拿不到内容,需要 SSR 或预渲染 |
| 跳转到登录页 | 内容需要登录,蜘蛛永远看不到 |
| 跳到首页 | 移动端适配或地域跳转写错了 |
<meta name="robots" content="noindex"> 忘了删(测试环境带过来的);X-Robots-Tag: noindex,比 meta 更隐蔽,只有看响应头才发现;robots.txt 的 Disallow 命中;# 响应头里的 noindex 只能这样看
curl -sI https://example.com/page | grep -i x-robots-tag用 HTTP 状态检测看状态和跳转,网页内容提取看蜘蛛实际能拿到的正文,Robots 检测验证某个 URL 是否被禁。
抓取超时会直接导致放弃。首字节时间尽量控制在 500ms 内,页面别动辄好几 MB。用网站测速和 Web 尺寸规范量一量,顺手确认 GZIP 压缩是否开启——开压缩是投入产出比最高的一项优化。
「权重」不是搜索引擎官方的指标,第三方工具给的那个数字是估算值,别拿它当 KPI。真正在起作用的是站点的可信度与相关性积累,外链只是其中一个信号。
| 特征 | 说明 |
|---|---|
| 来源站点相关且可信 | 同领域的站一条,胜过不相干的站一百条 |
| 正文内的自然链接 | 页脚、友链区、评论区的权重远低于正文 |
| 锚文本自然 | 全站清一色同一个关键词反而是典型的作弊特征 |
| 来源多样 | 域名、行业、地域分散 |
| 随时间平缓增长 | 一周暴涨几千条必然触发人工审核 |
rel 属性要用对:
<a href="..." rel="nofollow">不传递信任的普通外链</a>
<a href="..." rel="sponsored">付费 / 广告链接</a>
<a href="..." rel="ugc">用户生成内容里的链接</a>买链接、链轮、站群互链这类手段,短期可能有效,被识别后是整站级惩罚,恢复周期以月计。评估一下:你的站扛得住整站掉排名吗?
对绝大多数站长来说,下面这些的回报都比去搞外链高:
# 从 sitemap 里取出所有 URL,逐个检查状态码
grep -o '<loc>[^<]*' public/sitemap.xml | sed 's/<loc>//' | while read -r u; do
code=$(curl -s -o /dev/null -w '%{http_code}' "$u")
[ "$code" = 200 ] || echo "$code $u"
done这一条脚本能发现的问题,通常比一个月的外链建设更值钱。批量检查也可以直接用批量网站巡检。
别盯着「权重」那个数字,盯这四个:
| 指标 | 从哪看 | 说明 |
|---|---|---|
| 索引量 | 站长平台 | 被收录的页面总数 |
| 抓取频次与抓取异常 | 站长平台 | 异常上升是最早的预警信号 |
| 展现量与点击率 | 站长平台 | 展现高点击低 → 标题描述该改了 |
| 关键词覆盖数 | 站长平台 / 第三方 | 长尾词数量比单个大词排名更能反映站点健康 |
本文由 ip438查询网 原创,正文中的命令与配置片段可直接取用。 内容会随实践持续修订,发现错漏欢迎反馈。