百度爬虫抓取诊断地址:https://ziyuan.baidu.com/crawltools/index
第一个坑:百度爬虫无法抓取GitHub pages内容
百度和GitHub之前好像谈崩了,所以GitHub上的东西百度是无法抓取的,如果博客服务直接使用的GitHub pages,百度是无法抓取到的。
要解决这个问题,需要把博客放到百度爬虫可以抓取的服务上,比如各类S3服务直接提供静态网页服务,如腾讯云CO、,阿里云OSS,外部可以再挂载CDN;或者直接放在自己的服务器上。
我采用的是直接放在自己的服务器上,然后外部挂载的腾讯云的CDN服务。
第二个坑:HTTPS认证无法通过
HTTPS认证能够增加在搜索引擎的权重,但是https认证的时候也遇到一个坑,明明我所有的链接都是https的了,但是却无法通过百度的https认证。
这个坑的原因是,https认证必须保证http链接也是可以访问的,因为认证时是通过http访问来认证的。而我在挂载cdn的时候,强制所有的http请求直接重定向为https的访问了,所以始终无法通过,直接在服务器访问也是同样的问题。
所以要想通过https的认证,需要保证网站http和https访问都是可以支持的,而且不能把http重定向为https。
第三个坑:百度爬虫无法成功抓取页面内容
爬虫在进行页面爬取时,会解析到最终服务器的ip去进行访问,所以最终直接访问服务器来请求实际页面内容来解析。
我的博客是部署在我的服务器上的,然后外面挂载CDN,而CDN使用的域名和服务器的域名并不是同一个,所以最开始,在服务器上的NGINX并没有配置cdn使用的域名,所以当爬虫直接访问我的服务器时,并不能成功获取到页面内容,才开始并没有想到是这个原因,我把ip访问直接放回了博客内容,这样只解决了sitmap的上报问题,本身页面抓取的问题并没有解决。
不过在我认证https之前,爬虫是可以成功抓取到页面内容的,基于此分析,https和http差别就是ssl证书,而ssl证书是和域名相关的,而百度抓取的域名是我cdn的域名,分析到这个点,实际抓取失败的原因也就大概猜出来了。
解决方案就是在服务上的NGINX上配置上cdn的域名,因为是https的访问,所以还要将cdn的域名用的ssl证书也配置在NGINX上,配置完成后,再去进行百度爬虫诊断,发现可以成功抓取内容了。