日志按天统计,百度蜘蛛一天 4000 次请求,其中 3800 次落在 /list/ 和 /tag/,详情页只有不到 120 次,新文章上线十天依然不在索引里,必应那边早就收了。
原因不止一个,得分开看。列表页每页 200 条且无限翻页,蜘蛛一直在列表层打转;详情页链接由 JS 渲染后插入,百度不执行那段脚本;详情页 URL 带三层随机参数,被判定为低质变体。
先看日志里抓取目标页面的分布
awk '/Baiduspider/{print $7}' access.log | sed 's#/[0-9]\+$##' | sort | uniq -c | sort -rn | head
然后把列表页每页条数降到 50 并限制翻页深度
sed -i 's/per_page=200/per_page=50/' /etc/nginx/conf.d/list.conf
剩下的就是确认详情页链接在原始 HTML 里可达
curl -s https://www.example.com/list/ | grep -o 'href="/post/[0-9]*"' | head
这台环境是别人交接的,不少默认值被动过,只能一项项核。
改完先别撤,确认这几项。调整后详情页抓取占比升到四成,五天内新发布的文章有六成被抓过一次,索引量开始跟着涨。
容易忽略的是,列表翻页没有上限,等于给蜘蛛准备了一个走不完的迷宫,深度比数量更值得控制。拖得越久,排查成本越高,因为现场状态会被后续操作覆盖。
