百度搜索移动端网站优化

百度移动搜索建站优化白皮书

为了让百度搜索的重要合作伙伴——广大站长充分了解百度搜索引擎规则,并根据规则合理安全建设网站、优化网站,更好的获取搜索流量;百度搜索资源平台历时3个月,探访搜索内部各个技术部门,将百度搜索内部技术原理抽丝剥茧,化零为整,整理出《百度移动搜索建站优化白皮书》,希望与各位站长携手,为用户提供一个健康安全高效的搜索环境。

3.1  抓取友好性

关于抓取的优先级,在此重点强调:

√ 网站更新频率:经常更新高价值的站点,优先抓取

√ 受欢迎程度:用户体验好的站点,优先抓取

√ 优质入口:优质站点内链接,优先抓取

√ 历史的抓取效果越好,越优先抓取

√ 服务器稳定,优先抓取

√ 安全记录优质的网站,优先抓取

顺畅稳定的抓取是网站获得搜索用户、搜索流量的重要前提,影响抓取的关键因素,站长可以通过本章节了解。


3.1.1  URL规范

网站的URL如何设置,可参考2.3.1中的URL设置规范


3.1.1.1  参数

URL中的参数放置,需遵循两个要点:

√ 参数不能太复杂

√ 不要用无效参数,无效参数会导致页面识别问题,页面内容最终无法在搜索展示

另外,很多站长利用参数(对搜索引擎和页面内容而言参数无效)统计站点访问行为,这里强调下,尽量不要出现这种形式资源,例如:

https://www.test.com/deal/w00tb7cyv.html?s=a67b0e875ae58a14e3fcc460422032d3

或者:

http://nmtp.test.com/;NTESnmtpSI=029FF574C4739E1D0A45C9C90D656226.hzayq-nmt07.server.163.org-8010#/app/others/details?editId=&articleId=578543&articleType=0&from=sight

 

3.1.2  链接发现

3.1.2.1  百度蜘蛛

很多站长会咨询如何判断百度移动蜘蛛,这里推荐一种方法:只需两步,正确识别百度蜘蛛

查看UA

如果UA都不对,可以直接判断非百度搜索的蜘蛛,目前对外公布过的UA是:

移动UA 1:

Mozilla/5.0 (Linux;u;Android 4.2.2;zh-cn;) AppleWebKit/534.46 (KHTML,likeGecko) Version/5.1 Mobile Safari/10600.6.3 (compatible; Baiduspider/2.0;+http://www.baidu.com/ search/ spider.html)

移动UA 2:

Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 likeMac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143Safari/601.1 (compatible; Baiduspider-render/2.0; +http://www.baidu.com/search/spider.html)

PC UA 1:

Mozilla/5.0 (compatible; Baiduspider/2.0;+http://www.baidu.com/search/spider.html)

PC UA 2:

Mozilla/5.0(compatible;Baiduspider-render/2.0;+http://www.baidu.com/search/ spider.html)

反查IP

站长可以通过DNS反查IP的方式判断某只蜘蛛是否来自百度搜索引擎。根据平台不同验证方法不同,如Linux/Windows/OS三种平台下的验证方法分别如下:

在Linux平台下,可以使用hostip命令反解IP来判断是否来自百度蜘蛛的抓取。百度蜘蛛的hostname以*.baidu.com格式命名,非*.baidu.com即为冒充。



这里需要在提出一点,建议使用DNS更换为8.8.8.8后进行nslookup反向解析,否则很容易出现无返回或返回错误的问题。

在Windows平台下,可以使用nslookup ip命令反解IP来判断是否来自百度蜘蛛的抓取。打开命令处理器输入nslookup xxx.xxx.xxx.xxx(IP地址)就能解析IP,来判断是否来自百度蜘蛛的抓取,百度蜘蛛的hostname以*.baidu.com格式命名,非*.baidu.com即为冒充。

在Mac OS平台下,网站可以使用dig命令反解IP来判断是否来自百度蜘蛛的抓取。打开命令处理器输入dig xxx.xxx.xxx.xxx(IP地址)就能解析IP,来判断是否来自百度蜘蛛的抓取,百度蜘蛛的hostname以*.baidu.com的格式命名,非*.baidu.com即为冒充。


3.1.2.2  链接提交

链接提交工具是网站主动向百度搜索推送数据的工具,网站使用链接提交可缩短爬虫发现网站链接时间,目前链接提交工具支持四种方式提交:

√ 主动推送:是最为快速的提交方式,建议将站点当天新产出链接立即通过此方式推送给百度,以保证新链接可以及时被百度抓取。

√ Sitemap:网站可定期将网站链接放到Sitemap中,然后将Sitemap提交给百度。百度会周期性的抓取检查提交的Sitemap,对其中的链接进行处理,但抓取速度慢于主动推送。

√ 手工提交:如果不想通过程序提交,那么可以采用此种方式,手动将链接提交给百度。

√ 自动推送:是轻量级链接提交组件,将自动推送的JS代码放置在站点每一个页面源代码中,当页面被访问时,页面链接会自动推送给百度,有利于新页面更快被百度发现。

简单来说:建议有新闻属性站点,使用主动推送进行数据提交;新验证平台站点,或内容无时效性要求站点,可以使用Sitemap将网站全部内容使用Sitemap提交;技术能力弱,或网站内容较少的站点,可使用手工提交方式进行数据提交;最后,还可以使用插件方式,自动推送方式给百度提交数据

 

3.1.3  网页抓取

3.1.3.1  访问速度

关于移动页面的访问速度,百度搜索资源平台已于2017年10月推出过闪电算法,针对页面首页的打开速度给予策略支持。闪电算法中指出,移动搜索页面首屏加载时间将影响搜索排名。移动网页首屏加载时间在2秒之内的,在移动搜索下将获得提升页面评价优待,获得流量倾斜;同时,在移动搜索页面首屏加载非常慢(3秒及以上)的网页将会被打压。

对于页面访问速度的提速,这里也给到几点建议:

资源加载:

√ 将同类型资源在服务器端压缩合并,减少网络请求次数和资源体积。 

√ 引用通用资源,充分利用浏览器缓存。 

√ 使用CDN加速,将用户的请求定向到最合适的缓存服务器上。 

√ 非首屏图片类加载,将网络带宽留给首屏请求。

页面渲染:

√ 将CSS样式写在头部样式表中,减少由CSS文件网络请求造成的渲染阻塞。 

√ 将JavaScript放到文档末尾,或使用异步方式加载,避免JS执行阻塞渲染。 

√ 对非文字元素(如图片,视频)指定宽高,避免浏览器重排重绘。

希望广大站长持续关注页面加载速度体验,视网站自身情况,参照建议自行优化页面,或使用通用的加速解决方案(如MIP),不断优化页面首屏加载时间。

了解MIP-移动网页加速器可参考:https://www.mipengine.org/

 

3.1.3.2  返回码

HTTP状态码是用以表示网页服务器HTTP响应状态的3位数字代码。各位站长在平时维护网站过程中,可能会在站长工具后台抓取异常里面或者服务器日志里看到各种各样的响应状态码,有些甚至会影响网站的SEO效果,例如重点强调网页404设置,百度搜索资源平台(原百度站长平台)中部分工具如死链提交,需要网站把内容死链后进行提交,这里要求设置必须是404。

下面为大家整理了一些常见的HTTP状态码:

301(永久移动)请求的网页已被永久移动到新位置。服务器返回此响应(作为对GET或HEAD请求的响应)时,会自动将请求者转到新位置。

302:(临时移动)服务器目前正从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。此代码与响应GET和HEAD请求的301代码类似,会自动将请求者转到不同的位置。

这里强调301与302的区别:

301/302的关键区别在于:这个资源是否存在/有效

301指资源还在,只是换了一个位置,返回的是新位置的内容。

302指资源暂时失效,返回的是一个临时的代替页(例如镜像资源、首页、404页面)上。注意如果永久失效应当使用404。

有时站长认为百度对302不友好,可能是误用了302处理仍然有效的资源。

 400:(错误请求)服务器不理解请求的语法。

403:(已禁止)服务器已经理解请求,但是拒绝执行它。

404:(未找到)服务器找不到请求的网页。

这里不得不提的一点,很多站长想自定义404页面,需要做到确保蜘蛛访问时返回状态码为404,若因为404页面跳转时设置不当,返回了200状态码,则容易被搜索引擎认为网站上出现了大量重复页面,从而对网站评价造成影响。

500:(服务器内部错误)服务器遇到错误,无法完成请求。

502:(错误网关)服务器作为网关或代理,从上游服务器收到了无效的响应。

503:(服务不可用)目前无法使用服务器(由于超载或进行停机维护)。通常,这只是一种暂时的状态。

504:(网关超时)服务器作为网关或代理,未及时从上游服务器接收请求。

 

3.1.3.3  robots

robots工具的详细工具使用说明,细节参考4.3.4robots工具章节,关于robots的使用,仅强调以下两点:

√ 百度蜘蛛目前在robots里是不支持中文的,故网站robots文件编写不建议使用中文字符

√ robots文件支持UrlEncode编码这种写法,如http://www.test.cn/%E7%89%B9%E6%AE%8A:%E6%B5%8F%E8%A7%88/%E7%94%9F%E6%AD%BB%E7%8B%99%E5%87%BB:%E7%99%BD%E9%93%B6%E5%8A%A0%E7%89%B9%E6%9E%97


3.1.3.4  死链

当网站死链数据累积过多,并且被展示到搜索结果页中,对网站本身的访问体验和用户转化都起到了负面影响。另一方面,百度检查死链的流程也会为网站带来额外负担,影响网站其他正常页面的抓取和索引。

百度搜索资源平台推出死链提交工具,帮助网站提交死链数据,死链提交工具使用参考4.3.2死链提交工具。

什么是死链及死链的标准

页面已经无效,无法对用户提供任何有价值信息的页面就是死链接,比较常见死链形式共有3种,协议死链和内容死链是比较常见两种形式,除此之外还有跳转死链。

√ 协议死链:页面的TCP协议状态/HTTP协议状态明确表示的死链,常见的如404、403、503状态等。

√ 内容死链:服务器返回状态是正常的,但内容已经变更为不存在、已删除或需要权限等与原内容无关的信息页面。

√ 跳转死链:指页面内容已经失效,跳转到报错页,首页等行为。

 

3.1.4  访问稳定性

访问稳定性主要有以下几个注意点:

DNS解析

DNS是域名解析服务器,关于DNS,这里建议中文网站尽可能使用国内大型服务商提供的DNS服务,以保证站点的稳定解析。

分享一个DNS稳定性的示例:

搜索资源平台曾收到多个站长反馈,称网站从百度网页搜索消失,site发现网站数据为0。

经追查发现这些网站都使用国外某品牌的DNS服务器 *.DOMAINCONTROL.COM,此系列DNS服务器存在稳定性问题,百度蜘蛛经常解析不到IP,在百度蜘蛛看来,网站是死站点。此前也发现过多起小DNS服务商屏蔽百度蜘蛛解析请求或者国外DNS服务器不稳定的案例。因此这里建议网站,谨慎选择DNS服务。

蜘蛛封禁

针对爬虫的封禁会导致爬虫认为网站不可正常访问,进而采取对应的措施。爬虫封禁其实分两种,一种就是传统的robots封禁,另一种是需要技术人员配合的IP封禁和UA封禁;而绝大多数情况下的封禁都是一些操作不当导致的误封禁,然后在搜索引擎上的反应就是爬虫不能正常访问。所以针对爬虫封禁的操作一定要慎重,即使因为访问压力问题要临时封禁,也要尽快做恢复处理。

服务器负载

抛开服务器硬件问题(不可避免),绝大多数引起服务器负载过高的情况是软件程序引起的,如程序有内存泄露,程序出core,不合理混布服务(其中一个服务消耗服务器资源过大引起服务器负载增大,影响了服务器对爬虫访问请求的响应。)对于提供服务的机器一定要注意服务器的负载,留足够的buffer保证服务器具有一定的抗压能力。

其他人为因素

人为操作不当引起访问异常的情况是经常见到的,针对这种情况需要严格的制度约束,不同站点情况不一样。需要保证每一次的升级或者操作要准确无误。

 

3.1.5  可访问链接总量

3.1.5.1  资源可穷尽

一般来说网站的内容页面是可穷尽的,万级别,百万级别甚至亿级别,但一定是可穷尽的。而现实中确实存在这样一些网站,爬虫针对这些网站进行抓取提链时会陷入"链接黑洞";通俗的讲就是网站给爬虫呈现的链接不可穷尽;典型的是部分网站的搜索结果页,不同的query在不同anchor下的a标签链接不一样就导致了"链接黑洞"的产生,所以严禁URL的生成跟用户的访问行为或者搜索词等因素绑定。

 

3.2  页面解析

页面解析,主要指网站页面被蜘蛛抓取,会对页面进行分析识别,称之为页面解析。页面解析对网站至关重要,网站内容被抓取是网站被发现的第一步,而页面解析,则是网站内容被识别出来的重要一环,页面解析效果直接影响搜索引擎对网站的评价。


3.2.1  页面元素

3.2.1.1  页面标题

关于网页标题,百度搜索于2017年9月推出清风算法,重点打击网站标题作弊,引导用户点击,损害用户体验的行为;清风算法重点打击的标题作弊情况有以下两种:

√ 文不对题,网站标题与正文有明显不符合,误导搜索用户点击,对搜索用户造成伤害

√ 大量堆砌,网站标题中出现大量堆砌关键词的情况也十分不提倡

关于网站标题作弊的详细解读,参考搜索学院发布官方文档《百度搜索内容质量白皮书——网页标题作弊详解》

关于网站TDK,有以下几种情况需要注意:("T"代表页头中的title元素,"D"代表页头中的description元素,"K"代表页头中的keywords元素,简单指网站的标题、描述和摘要)

√ 百度未承诺严格按照title和description的内容展示标题和摘要,尤其是摘要,会根据用户检索的关键词,自动匹配展示合适的摘要内容,让用户了解网页的主要内容,影响用户的行为决策。

√ 站长会发现同一条链接的摘要在不同关键词下是变化的,可能不会完全符合站长预期,尤其是站长在检索框进行site语法操作时,可能会感觉摘要都比较差。但请不要担心,毕竟绝大多数普通网民不会这样操作。在此情况下出现不符合预期的摘要并不代表站点被惩罚。

√ 还有一种情况,是网页中的HTML代码有误,导致百度无法解析出摘要,所以有时大家会看到某些结果的摘要是乱码(当然这种情况很少见),所以也请站长注意代码规范


3.2.1.2  主体内容

主体内容注意两个点,一个主体内容过长(通常网页源码长度不能超过128k),文章过长可能会引起抓取截断;另外一个是注意内容不能空短,空短内容也会被判断为无价值内容。

以下分析两个示例:

关于主体内容过长的示例分析:

某网站主体内容都是JS生成,针对用户访问,没有做优化;但是网站特针对爬虫抓取做了优化,直接将图片进行base64编码推送给百度,然而优化后发现内容没有被百度展示出来

页面质量很好,还特意针对爬虫做了优化,为什么内容反而无法出现在百度搜索中

分析主要有以下原因:

√ 网站针对爬虫爬取做的优化,是直接将图片base64编码后放到HTML中,导致页面长度过长,网站页面长度达164k;

√ 站点优化后将主体内容放于最后,图片却放于前面;

√ 爬虫抓取内容后,页面内容过长被截断,已抓取部分无法识别到主体内容,最终导致页面被认定为空短而不建索引。

这样的情况给到以下建议:

√ 如站点针对爬虫爬取做优化,建议网站源码长度在128k之内,不要过长

√ 针对爬虫爬取做优化,请将主体内容放于前方,避免抓取截断造成的内容抓取不全

关于内容空短的示例分析:

某网站反馈网站内容未被建索引,分析发现,网站抓取没有问题,但被抓取到的页面,都提示需要输入验证码才能查看全部页面,这类页面被判断为空短页面,这类页面在抓取后,会被判定为垃圾内容。

而且当蜘蛛对一个网站抓取后发现大面积都是低值的空短页面时,爬虫会认为这个站点的整体价值比较低,那么在后面的抓取流量分布上会降低,导致针对该站点的页面更新会比较慢,进而抓取甚至建索引库也会比较慢。



为什么会出现网站内容空短这种情况,其中一个原因是网站内容未全部搭建完成,未对外开放,但已被蜘蛛爬取发现。针对这种情况,建议网站在邀请测试阶段使用robots封禁。

另外还会有些网站,设置用户查看权限,如需用户登陆才能查看全部内容,这样的行为对搜索引擎也极不友好,蜘蛛无法模拟用户登陆,仅能抓取网站已展示页面,可能会导致抓取页面为空短的现象。

这里再次强调,不要让爬虫给站点画上不优质的标签,对网站将产生很不好的影响。另外,移动端的H5页面,很多都是采用JS方式加载,其实是更容易产生空短,请各位站长注意。
  

 

3.2.1.3  网页发布时间

关于网页发布时间,有以下几点建议<

百度搜索移动端网站优化相关百科