最近刚升级为2.0的technicalseo.com

Technical SEO指的是从技术层面来改善网站的搜索引擎友好度,让网站的内容更好地被搜索引擎发现和理解,从而提高展现和排名的SEO手段。

许多网站投入了巨大的时间和精力进行外链建设内容建设但却无法取得期望的效果,这往往就是由于忽略了Technical SEO的影响。

那么什么是Technical SEO的研究方法论呢?本篇笔者将通过在推外数字营销:maxket.com网站上历时两个多月的实验来带你走进SEO的技术世界。

研究目的 – 各搜索引擎对JavaScript跳转的处理

我们知道,现代搜索引擎不但会分析网页的HTML,还会尝试着把HTML页面“画”出来,这个过程叫作渲染。比如谷歌会用三年前的Chrome版本41对爬取的网页进行渲染,这个过程被称作WRS(Web Rendering Service)。

谷歌索引的第二波便是渲染页面的过程

在这个渲染的过程中,一般都会运行JS。那么如果我们用了JS跳转,各个搜索引擎能否发现跳转的目的页面呢?

实验准备 – UA(User Agent) + 等待时间

我们假定搜索引擎会运行JS同时会运行一段时间如5秒,那么我们就要来验证这个情况。为此我们设了两个门槛:

    首先我们要检测搜索引擎是否会去判断if语句里的条件其次我们要检测搜索引擎最长每个页面运行JS的时间是多少

我们按照这个思路建了14个页面:

跳转的源页面列表

稍微解释一下jsredirect就是直接跳转,-Xsec代表延迟X秒,而所以含baidu的文件名表示只针对非百度爬虫进行跳转。也就是说:

jsredirect表示不加条件直接跳转。jsredirect-3sec表示三秒后自动跳转。jsredirect-baidu-4sec表示四秒后,对非百度爬虫自动跳转。jsredirect-ua-non-baidu表示只要不是百度爬虫就自动跳转。
非百度爬虫则七秒钟后跳转

相应地每个页面跳转的目的页面也各不相同:

JS跳转目的页面
jsredirect跳转到just-redirect页面jsredirect-Xsec页面跳转到X-sec页面jsredirect-ua-non-baidu页面跳转到ua-non-baidu页面jsredirect-ua-non-baidu-X-sec页面跳转到ua-non-baidu-X-sec页面实验原理 – 通过网站访问记录记录爬虫行为

我们知道,服务器的访问请求记录(通常为access.log文件)会包含每个HTTP请求的Response。因此当我们查看特定UA我们便可以了解爬虫的行为了。

比如我们可以看包含baiduspider的UA的表现,这包含了所有百度爬虫的行为。但是我们为了保证实验的可靠性还需要一些额外的工作。

百度云CDN设置搜索引擎回源
    保证CDN会对爬虫蜘蛛的访问回源,这样才能在站点访问记录上发现爬虫请求。要过滤掉那些假的蜘蛛。你可以通过用NSLOOKUP + IP的指令来检查爬虫的真实性。要意识到CDN总会屏蔽掉一些“便衣”蜘蛛,就是那些以一般UA访问,实际上是搜索引擎蜘蛛的那些请求。换句话说不是所有的百度搜索爬虫都会在其UA中标识baiduspider的,这样做很多时候是为了反作弊。其他搜索引擎也一样,360的“便衣”蜘蛛更多,所以本次实验未发现360蜘蛛。我们刻意在robots.txt中屏蔽了谷歌蜘蛛的爬行。因为我们对其能力很确信。值得议题的是推外还屏蔽了神马,只能怪它曾经带来太大服务器压力。
实验过程 – 开始测试蜘蛛爬行行为

我们把跳转页面和跳转目的页面分别上传服务器后便开始吸引爬虫光顾。最简单的办法是把这些跳转页面的链接放到推外网页上。除此之外,还可以通过百度资源平台的链接提交工具把跳转页面提交了。

至此,除了跳转页面中获得URL,跳转目的页面没有暴露在任何其他引擎和链接中。

经过两个月左右的数据积累,我们最终可以从访问日志中过滤出与/jsr/目录和/jsrd/目录相匹配的请求。

整理后的site log,已按照爬虫区分

接下来我们就可以对各个爬虫总结能力和行为。

实验结论 – 各爬虫对JS跳转的不同反应