最近,我负责的一个网站出现了采集异常的情况。 周末有时间我会讲一下整个诊断过程。 有两个核心问题,分别是服务器架构和网站程序架构造成的; 本文仅分享服务器架构导致的采集异常。
首先,介绍一下你自己。 我在深圳一家公司工作,长期从事乙方外包公司工作。 众所周知,seo外包公司负责处理大部分小型企业的网站。 这些网站的关键词往往只需要改成TDK就可以完成排名工作。
另外,目前大多数中小型网站的架构很简单,开源CMS+单一云服务器(虚拟主机)+CDN(这家公司还是有一定运维能力的)。 鉴于以上经验,我完全不知道服务器架构也会出现问题。
1. 异常采集的发现
从(图1)可以明显看出,3月中下旬收录正常,问题发生在3月31日至4月25日期间。 也就是说,这个间隔一定是站点出现问题造成的。 异常采集。
我开始按照通常的方法检查,尤其是服务器日志中的一些参数没有排除,导致发现了问题,如下:
1.1. 站长平台模拟爬虫爬行,这是正常的。
1.2. 搜索引擎爬虫爬取的搜索数量不断增加,这趋于正常。 这里有一个异常。 检查一下,假的蜘蛛爬虫正在抓取数据,而真正的百度爬虫确实在增加。
1.3. 核心关键词排名有波动,但有偏向,上升趋势居前。 目前核心关键词处于前5名,属于正常现象。
1.4、服务器日志分析,爬虫对应的request_uri值(相对地址)暂时正常,请看下面。
1.5. 服务器日志是阿里云的日志。 对于http请求,小区域服务器500访问错误发生在7月18日、7月19日、7月20日和7月26日。 不过最多只是出现有限时间的采集异常,并不会大规模收录。
在分析服务器访问日志时,一般需要关注的项目有:爬虫爬行时间值、爬虫页面URL值、爬虫在页面中爬行顺序、时间内爬虫爬行次数、蜘蛛IP值高和低重量。 (我不太清楚,所以就不提了)
页面URL值:一般情况下,服务器日志都是相对地址。 我诊断的问题是主机值被忽略。 实际抓取的URL应该是host+request_uri值的组合。
页面抓取顺序:可以查看网站架构的抓取情况。 可以大致了解爬虫在网站页面中的爬行顺序。 可以协助使用爬虫软件或者开发经典爬虫(PY、PHP等)的爬行情况作为参考。
一段时间内爬虫爬行数量:查看一段时间内网站页面总数和爬行量占比,判断网站的受欢迎程度。
说到这里,我来解释一下网站的服务器架构:
它采用负载均衡,文件服务器+数据服务器+前端服务器。 数据服务器上的所有数据均由API接口、GET方法前端和应用程序使用。 网站 URL 是相对地址。 当然,服务器之间也采用内网通信。
综上所述,你可能还会看到有一个被忽略的参数,就是1.4中提到的日志主机值。 因为是相对地址,所以host+request_uri就是要捕获的完整地址。 被忽略的Host值原来是API的二级域名(图2)
说到这里,你可能已经基本确定要知道原因了。
即百度根本没有捕获真实的页面URL,而是实际捕获了API域名+request_uri,
即假设数据库服务器API向前端渲染的数据路径为api.name.com,使用内网IP,
捕获的页面URL为:
真实的 URL 应该是外部 IP 地址:
现在已经掌握了30%的核心问题,下一步自然是数据证明,主要从几个点来说。
1.读取开发日志记录
2、4月份前后服务器日志对比
从1开始,我们发现4.13负载均衡数据服务器API取消了代理。 这样做的后果就是前端直接抓取API域名的host值下的数据并渲染到前端,因为直接使用内网IP,不需要经过代理。 同时api二级域名就是host主机值。
从2开始,发现4月份左右的日志的host主机值发生了变化,从api.name.com变成了api.name.com。
最终问题出现在host为api且没有使用proxy的站点上。 也就是说只要api站点通过代理成为www的二级站点渲染即可。 如果不使用代理,百度GET返回的页面是内网IP,这就是捕获的URL。
解决方案:
1、负载均衡的数据服务器api接口使用代理
2.在Head区域添加标签
3、前端渲染的HTML使用绝对路径。
4.开发API接口推送数据
这篇文章完结了。 由于我只是SEO,运维能力有限,所以可以配置单台服务器来下载网站。 我只听说过一点负载均衡。 操作和维护如有错误,敬请谅解。
暂无评论内容