首发于 SEO技术流
Google 爬虫 SEO 优化实践 - 稳定性、体验优化和差异化承接

Google 爬虫 SEO 优化实践 - 稳定性、体验优化和差异化承接

搜索引擎在对网页进行收录和排序时,首先需要搜索引擎爬虫来抓取网页。所以针对搜索引擎爬虫的优化,算是 SEO 的第一环。

去年在 AliExpress SEO 工作中遇到了一些搜索引擎爬虫的问题(主要是 Googlebot),比如爬虫抓取过量导致服务器崩溃、弹窗广告被搜索引擎判断为体验差、JavaScript 内容如何更好的抓取等。因此,我们启动了一个爬虫优化的专项 - “蜘蛛侠项目”,最后效果也不错:每天整体抓取量提升了几亿,流量提升了几十万,虚拟机也下线了几百多台

中间有些方案是国内首创,甚至是国际首创,所以我还是比较开心的

1. 整体内容

搜索引擎爬虫的 SEO 优化,主要分为这几个部分:

  1. 抓取稳定性机制的建立 - 解决了服务器被搜索引擎爬虫抓崩的问题
  2. 搜索引擎爬虫的体验优化 - 解决了弹窗广告被爬虫判断为负面体验,流量影响的问题
  3. SEO 差异化承接,包含人虫分离、缓存、SSR - 解决了 JavaScript 内容抓取的问题,也提升了整体抓取效率、降低了内部服务器成本

2. 爬虫稳定性机制的建立

事情要从一次 P0 bug 说起。有一天我被叫去参加一个 P0 bug 的分析会:AliExpress 的搜索服务器崩了,用户无法正常站内搜索。后来发现 “罪魁祸首” 就是 Googlebot,抓取量突然提升了一倍,导致搜索服务器负载过高。开发同学也理解爬虫量的增加对 SEO 有帮助,但为了保证用户在站内正常搜索,只能把搜索引擎爬虫屏蔽了。


根据之前的经验,搜索引擎爬虫无法正常抓取时,会认为频道/网站无法正常访问(当时网站是返回验证码网页,还是200返回码),然后会大范围降低网站的排名和流量。于是,我马上提出了一版爬虫稳定性方案:当爬虫 QPS 超过一定“水位”时,返回对爬虫友好的状态码(429/500/503),告诉 Googlebot 目前是网站服务器压力过大,需要降低抓取频率;当爬虫访问在可接受范围内,就正常返回网页( 200 状态码)。当这个方案上线后,爬虫收到了信号,马上调低了抓取频率,服务器状态也迅速恢复正常。最后,我们将这套机制沉淀了下来,形成了一套长期可用的爬虫稳定性机制。

值得一提的是,双十一也成功应用了这个方案。大促期间为了保障用户的正常访问,就调低了爬虫的 QPS,把爬虫抓取限制在较低的范围。大促后,爬虫 QPS 设置恢复正常,SEO 流量完全正常,并没有出现往年大促抓取异常导致流量下降的情况。

3. 搜索引擎爬虫的体验优化



在当前电商 SEO 领域,一般无线端的流量比例是高于 PC 端的,但难受的是这部分流量的转化远低于 PC(这中间可能有网络、设备、网站基建等原因)。AliExpress 为了提升无线端流量的利用效率,在用户访问时有个全屏遮罩的弹窗广告,引导用户下载 APP 再转化。但其实这类弹窗其实是非常伤害用户体验的,Google 在一个文档里也说过这类弹窗对用户体验的伤害,并且在排名上会有较大的影响(百度也有体验优化的文档提到广告的问题)。为了流量提升,我需要把这个弹窗下掉。第一期在不影响 APP 下降量的基础上,我针对 Googlebot 和其他搜索引擎爬虫下掉了这个弹窗。也就是说,当搜索引擎爬虫访问时,这个页面是不展示这个弹窗广告的;当用户访问时,弹窗广告还是正常显示。果然,下掉弹窗广告的第二周,SEO 流量就有了明显提升,最后粗估大概有 10 万+的流量提升吧。后续,在和其他团队一起推动下,用户侧的弹窗广告也下掉了,改成了对体验更友好,更智能的广告形式。这是后话了。

3.1. 如何区分搜索引擎爬虫

有一些用户可能会有疑问,如何区分搜索引擎呢?主要是通过访问时的 User-Agent 字段来判断。一般搜索引擎爬虫,都会有个固定的 User-Agent 的值。
以下是我整理的2个搜索引擎的特征字段:

搜索引擎特征字段官方文档
GoogleGooglebo developers.google.com/s
百度Baiduspide help.baidu.com/question?


4. SEO 差异化承接 - 包含人虫分离、缓存、CSR+SSR


从弹窗开始,我意识到很多类似的场景:网站在针对用户浏览时,希望展示 coupon/code 来提升转化,也希望放上广告增加商业化收入,但在针对爬虫抓取时,希望网站越简单、越快越好。也就是说,其实同一套页面承载了两类用户的需求:真实的访问用户、搜索引擎爬虫。而且这两类的诉求并不完全一致的(如图架构1.0)。其实,AliExpress 也有个解决方案,就是做两套页面(2 个 URL),一套服务于真实用户的访问,一套是服务于搜索引擎爬虫的抓取(如图架构1.1)。但仍有个比较严重的问题,就是这两套页面都去做了 SEO 投放,内容高度重复,也就有了权重分散、排名内部打架的情况。所以我提出了新的方案,就是 SEO 差异化承接(如图架构2.0)。主要内容是:

这样既可以实现 SEO 用户的精细化运营、商业化,又能保证 SEO 流量正常增长。


最后,这个方案在开发同学的支持下逐渐实现,效果当然也很不错:

人虫分离是什么

其实就是把真实访客和搜索引擎爬虫分开,具体的实现方式就是使用前文讲的 User-Agent 的方式来区分。分开之后,就可以有不同的策略:针对用户主要做承接转化、针对爬虫主要做易于爬虫的抓取和分析。

针对爬虫的缓存

说实话,针对爬虫的缓存是最有效果的一部分。因为一方面,缓存能大大提升爬虫的抓取效率,另一方面,也能极大的降低服务器的成本。爬虫访问一个页面时,每次都需要实时调用服务器来获取一些数据(因为现在都是动态网页),所以有一些跟服务器的握手时间。另外,因为爬虫每天的抓取量巨大,对服务器也是一个不小的压力(参考第一部分服务器被抓挂的案例)。所以,我们把网页做了静态缓存放在服务器上,每次爬虫来抓取时直接返回这个静态缓存页面,无需动态获取数据。在提升抓取速度的同时,服务器的压力也得到了释放。当然,中间也有一些缓存策略,比如主动缓存和被动缓存、缓存频道的选择、缓存时间的选定等。

SSR+CSR


之前在《JavaScript SEO》提到过,Googlebot 已经具备了 JavaScript 内容的解析能力,但同步化仍是效率更高的方式,因为 JavaScript 渲染还是有一些成本。所以在人虫分离的架构下,就可以考虑采用 SSR+CSR 的实现方式:

参考网页

代做工资流水公司台州入职银行流水开具盐城做流水账单江门工资流水账单打印大庆代做收入证明苏州办贷款流水襄阳办理房贷工资流水商丘房贷银行流水 价格绵阳做自存流水北京银行流水账制作青岛银行流水单多少钱荆州办流水账单洛阳代办流水西安办工资证明邯郸银行流水电子版多少钱贵阳工资流水多少钱廊坊开工资流水账单长沙代开消费贷流水兰州银行流水修改开具宜春代开银行流水PS揭阳办贷款流水黄冈贷款流水样本郑州开工资流水苏州背调银行流水价格常州公司银行流水图片九江代开入职工资流水西安代开在职证明西安代做企业贷流水衡阳个人工资流水 图片泰州薪资银行流水黄冈工资代付流水办理香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

代做工资流水公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化