蜘蛛在爬行时并不理解参数的含义,它只看到一个又一个 URL。带参数的地址会进入抓取队列,但是否值得抓取,取决于这个参数是否对应独立内容。
蜘蛛怎么看待带参数的 URL
从爬虫视角,URL 只要不同,通常就算不同地址。它会按发现顺序去抓,抓完后判断内容是否重复。如果多个参数版本最终渲染出几乎一样的页面,蜘蛛可能选一个作为代表,也可能分别收录,造成重复。
关键在于参数有没有改变主体内容:
- 筛选与排序参数:如 ?color=red、?sort=price。若列表结果确实不同,可能值得被抓;若只是顺序不同,价值很低。
- 跟踪参数:如 utm_source、gclid。通常不改变内容,最好别让蜘蛛大量抓取。
- 分页参数:如 ?page=2。分页是真实内容序列,蜘蛛需要能顺着走。
- 会话或打印参数:如 sid、print=1。一般不应进入抓取路径。
抓取路径会被参数怎样带偏
内链和 Sitemap 是蜘蛛发现 URL 的主要入口。如果内链里夹杂跟踪参数,蜘蛛会把这些地址也当候选,抓取预算被分散到无差异页面上。更常见的是筛选组合:一个列表页有颜色、尺寸、排序多个参数,组合出的 URL 数量可能远超实际内容量。
参数越多,蜘蛛越容易在“看起来不同、内容相同”的地址之间来回走,真正需要更新的页面反而排到后面。
站内可以做的几件事
- 规范内链:站内链接尽量指向不带跟踪参数的干净 URL,筛选和排序若不需要收录,用按钮或表单提交,而不是大量 a 标签。
- 统一规范地址:对同一内容的不同参数版本,用 canonical 指向首选 URL。若服务器能判断,也可以 301 到规范地址。
- 谨慎使用 robots.txt:屏蔽跟踪参数可以节省抓取,但被屏蔽的 URL 不会再被抓取,也不会传递信号。若某些筛选页希望被收录,不要直接屏蔽,改用 canonical 或 noindex。
- Sitemap 只放规范 URL:提交带参数的地址会让蜘蛛优先抓这些版本,和 canonical 信号容易冲突。
- 处理大小写、斜杠与参数顺序:/Page 和 /page、/a?b=1&c=2 和 /a?c=2&b=1 最好由服务器统一重定向,否则蜘蛛会当成多个地址。
分页参数要单独看
分页不是重复内容,它是列表的连续部分。蜘蛛需要从第一页走到后面,才能发现更多详情页。所以分页链接应保持可抓,别用 rel=nofollow 全部切断,也别只靠 JavaScript 点击。若分页 URL 参数过多,可保留 page 参数,去掉其他跟踪参数。
观察与调整
想确认参数是否影响抓取,可以看服务器日志中带参数的请求比例、蜘蛛在哪些参数组合上停留、这些页面返回的内容是否相似。若发现大量参数 URL 被抓但内容重复,优先收内链、加 canonical、统一重定向,而不是一味屏蔽。
简单说,蜘蛛对参数没有偏好,它跟着链接走。站内把有价值的 URL 路径做清晰,把无差异的参数地址收敛掉,抓取效率会更集中。