服务器告警记录:凌晨3点整,单IP每秒产生15次高频访问请求,网站日均50000次的抓取配额在40分钟内消耗殆尽。
网站管理员打开谷歌站长后台,屏幕上显示着断崖下跌的红色曲线。周三下午有1200个网页处于正常收录状态,到了周四早晨数字变成200个。1000个商品页面在一夜之间消失在搜索结果里。调取服务器原始日志分析,爬虫程序在凌晨时分集中访问了多层级的分类目录。配额在极短时间内被无意义的动作全部耗尽。站长后台的覆盖率报告给出了刺眼的红色提示。一部分网址落入已发现尚未编入索引的分组。另一部分被归入已抓取尚未编入索引的列表。辛苦填写的商品描述文字、花钱请摄影师拍摄的30多张高清产品实物图、附带的5分钟视频展示,全部失去了在搜索引擎曝光展示的机会。
核对昨天的正常展现页面数量
下载凌晨3点的服务器访问日志
统计40分钟内被消耗的抓取配额
审查特定分类目录的爬虫行进轨迹
导出被标记为未编入索引的具体网址清单
使用代码编辑工具打开网站根目录的地图XML文件。官方指南写明,一份合格的地图文件大小不能超过50MB,包含的网址数量上限是5万个。出问题的独立站提交的文件里包含了4800个产品链接。开启扫描软件测试这4800个链接的真实连通率。跑完一遍测试,返回状态码是200的健康网页只有3100个。剩余的1700个异常链接里,有850个是早已下架的404死链商品。450个经历了重定向跳转,网站改版留下了三层以上的杂乱跳转链条。还有400个页面的数据库查询占用内存过大,服务器响应时间超过3秒,抛出了500内部错误警告。爬虫遇到满是错误的指路牌,会对整个站点的质量产生极其严重的怀疑。
控制XML文件体积在50MB红线之下
确保单文件网址数量保持在5万个以内
排查4800个链接的真实访问状态代码
剥离850个已下架的404商品网址
打破三层以上的多重跳转死循环
相似度高达90%的内容堆砌在完全不同的地址下。一件红色的短袖T恤与蓝色的同款T恤各自占有一个独立的网页。文字描述段落一字不差,唯一的区别仅仅是商品标题里的颜色词汇。搜索引擎每天要处理1300亿个网页内容的储存任务。遇到高度雷同的页面代码,爬虫程序会启动强制查重机制,挑选其中一个放入数据库存储,遗弃剩下的几百个页面。给带有参数的网页加入规范化HTML标签能解决大面积重复的困扰。在代码头部加入规范属性,指向那个拥有详细买家秀图片的主打颜色款式。把省下来的有限抓取预算全部分配给真正具备独立原创内容的图文详情页。
清点带有追踪尾缀的重复页面数量
找出文字相似度突破90%的商品页
给主打产品打上规范化代码标签
把带有颜色参数的辅助网址重定向至主页
减少数据库动态生成的临时冗余页面
把电脑浏览器视窗缩小到375像素的智能手机屏幕宽度。文字排版与产品图片挤成一团。加入购物车的按钮可点击区域小于48x48像素。部分说明文本的字体大小被强制设定在10px以下,需要用手指不断放大屏幕才能勉强看清。打开谷歌移动设备适合性测试工具,一份长达三页的报告里布满了红色的叉号。爬虫程序现在完全以智能手机代理的身份来模拟访客动作。网页加载耗时超过2.5秒,LCP指标在站长后台亮起黄灯告警。排查页面的CSS渲染阻塞文件。把3MB的高清横幅图片丢进压缩工具,转换成只有150KB大小的WebP轻量格式。延迟加载屏幕可视区域之外的下半场图像。把首字节到达时间强行压低在200毫秒以内。
拉大触控目标之间保持至少8个像素的安全间距
全局字号设定在16像素的适读尺寸之上
把3MB的首屏横幅大图暴力压缩至150KB
全面替换老旧的PNG大图为WebP轻量格式
清理网页头部阻塞视线加载的冗余JS脚本
孤立的网页极难被抓取程序顺利找到。一篇费尽心思写出来的两千字实测文章发布后,没有任何站内其他页面给出文字形式的指向链接。它就像是汪洋大海里的一座无名孤岛。用日志分析软件提取出过去30天的爬虫访问轨迹。包含三层以上目录深度的深层页面,抓取频率极低,有十几个冷门网页连续两周没有一条访问记录。首页积攒的极高权重无法顺畅流向底层的文字详情页。在网站头部和底部双向增加全站互通的面包屑层级导航。把近期热卖的50款商品放进侧边栏的高曝光推荐位。给每一篇新发布的博客文章穿插3到5个带有明确描述性文字的内部超链接。构建四通八达的网状目录结构。
补全网页头部和底部的全站面包屑导航层级
给深层孤岛页面建立至少3条站内导流通道
将50款热卖商品固定在侧边栏推荐位
每篇博客插入3到5个带有描述字眼的内部链接
消除连续两周零抓取记录的偏僻下级目录
调取Nginx服务器过去90天的原始访问记录文本。提取出带有谷歌爬虫标识的580万条抓取记录。把这些纯文本文件导入分析软件进行深度清洗。41%的抓取配额被消耗在带有问号的搜索参数地址上。爬虫每天花费12个小时停留在由访客随意组合拼凑出的34000多个无意义搜索结果里。真正的优质商品页一天只能分到区区300次访问机会。在网站的根目录新建一个拦截指令TXT文件。输入拦截代码封锁带有特定前缀的所有动态参数地址。阻断爬虫在无限循环的站内搜索结果里彻底迷路。释放出来的每天42000次抓取频率会重新回流到常规的产品分类目录下。
下载服务器过去90天生成的原始文本日志
过滤出带有爬虫标识的580万条访问记录
统计带有问号参数的冗余网址抓取占比
在文本文件里添加代码拦截访问指令
释放每天数万次被无端消耗的爬虫配额
登录谷歌站长后台进行手动操作干预。在左侧的深色菜单栏找到网站地图专属选项。鼠标点击那个包含多项红色警告的旧版XML文件,选择右下角的移除指令。回到网站的后台生成插件界面,重新打包一份去除了所有死链、内容极其纯净的新版名片集。提交干净完整的XML地址,按下确认键。把排查后修复完毕的那1000个失效页面的完整地址全部导出成Excel表格文档。根据历史访问数据挑选其中流量排名前20的页面,逐个复制粘贴进网址检查工具的顶部宽阔输入框。点击请求编入索引按钮,主动呼叫爬虫上门收录。建立一个日历提醒,每隔7天下载一次最新的网页覆盖率报告文件。打开文件对比已抓取栏目的数字变化趋势,等待代表有效网址的绿色线条慢慢向上爬升。
在后台操作面板点击移除含有报错的旧版文件
上传一份剔除全部死链的纯净版XML新地址
把1000个失效网址全部导出成Excel表格文件
挑选流量排名前20的页面进入输入框手动提交
定好日历每隔7天下载一次覆盖率报表观察变化
| 状态码 | 真实访问状态 | 应对动作 |
|---|---|---|
| 200 | 页面正常加载显示 | 留在地图文件内安心等待爬虫上门 |
| 301 | 发生永久重定向跳转 | 提取出跳转链条最底部的最终地址 |
| 404 | 页面文件已经彻底删除 | 从提交列表里非常干净地剔除出去 |
| 500 | 服务器内部彻底崩溃 | 排查数据库查询占用内存过高问题 |
| 503 | 服务器资源暂时不可用 | 增加宽带网络上限应对高并发流量 |