Update 2016.10.25:今天发现百度自2016年9月中下旬左右做了调整,通过这种方法可能获取不到关键词了。

上篇文章中讲到过获取移动设备上用户通过百度自然搜索来到网站的搜索关键词相关信息的问题,也给出了相应的解决办法。不过因为当时时间有些匆忙,所以草草结尾了。今天咱们来看看这部分流量是在什么情况下出现的,以及这部分流量怎么才能将之归类到Organic Search而非Referral。

先说第一个问题,m.baidu.com / referral,这部分流量是怎么来的。

一、m.baidu.com / referral 的来由

在移动设备上使用百度搜索,输入一个搜索词之后会呈现出10条搜索结果。这个时候想点击查看其中某个搜索结果,可能会有两个操作,一个就是直接点击打开,另一个就是按住新标签页打开。通过Fiddler 对这两个过程抓包,可以发现这两者的不同点。直接点击打开的大致过程为:

先跳转到类似一个这样的地址:

http://m.baidu.com/from=1012704v/bd_page_type=1/ssid=0/uid=0/pu=usm%402%2Csz%401320_2001%2Cta%40iphone_1_9.0_3_601/baiduid=A8317F2B8143D20004ECB21FA3B00ACF/w=0_10_test……

而后302跳转到搜索结果的着陆页,如:

http://fanyi.baidu.com/

302跳转一般会保留referrer信息,因此如果搜索着陆页加了GA代码,其referrer信息会出现在发送到GA请求的dr部分,dr的值形如:

http://m.baidu.com/from=1012585s/s?word=test&sa=tb&ts=0657079&t_kt=86

这种情况下GA能自动识别为baidu / organic。

而如果是新标签页打开,这个过程就不一样了,先跳转到类似这样的一个地址:

http://m.baidu.com/from=1012704v/bd_page_type=1/ssid=0/uid=0/pu=usm%402%2Csz%401320_2001%2Cta%40iphone_1_9.0_3_601/baiduid=A8317F2B8143D20004ECB21FA3B00ACF/w=0_10_test……

而后通过JS window.location.replace或meta refresh(不支持JS时)的方式跳转到搜索结果的着陆页面,如:

http://fanyi.baidu.com/

这样来到搜索结果页时的前一个页面为:

http://m.baidu.com/from=1012704v/bd_page_type=1/ssid=0/uid=0/pu=usm%402%2Csz%401320_2001%2Cta%40iphone_1_9.0_3_601/baiduid=A8317F2B8143D20004ECB21FA3B00ACF/w=0_10_test……

因此这条url变为本次访问的referrer信息。

GA 是通过referrer信息中的域名和查询参数(url问号后的部分)来识别是否为搜索引擎的,这个referrer信息的域名虽然符合baidu.com,但是查询参数中没有wd、word等参数,因而这次访问会被识别为m.baidu.com / referral。

二、将m.baidu.com / referral 归到Organic Search

在GA 中思考各类问题的解决办法,一般可以走系统配置 - 数据收集 - 数据处理 - 报表呈现的方式。

系统配置层面,能否使得m.baidu.com / referral 归到Organic Search,一般的思路是配置自然搜索源或自定义渠道分组。配置自然搜索源,有两个很重要的必须填写的字段,一个是域名,另一个是查询参数。就像上边说到的,这种referrer中带搜索关键词信息的部分没有出现在查询参数对应的值中,因此不推荐使用这种方式。自定义渠道分组是可以的,不过仅能在流量获取-所有流量-渠道报告中看到,使用自定义报告或次级维度时都选择不到新建的渠道维度。这种方法的在本文末有一个我分享出来的自定义报告配置,欢迎使用。

数据收集层面,也是可以实现将m.baidu.com / referral 归到Organic Search 的,不过需要修改GA基础代码。一种可行的修改方式为:

<!-- Google Analytics -->
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');

ga('create', 'UA-XXXXX-Y', 'auto');
var reg = /^(https?:\/\/)m\.baidu\.com.*\/w=\d{1,}_\d{1,}_([^\/]+)/;
if (reg.exec(document.referrer)) {
ga('set', 'campaignSource', 'm.baidu.com');
ga('set', 'campaignMedium', 'organic');
}
ga('send', 'pageview');
</script>
<!-- End Google Analytics -->

这种方式的优点是,会把所有来自m.baidu.com且符合自然搜索特征的标识为m.baidu.com / organic,根据GA Default Channel Groupings的规则,最后这部分就会归到Organic Search。这种方法的缺点就是需要手动修改GA 基础统计代码,如果之后baidu的url规则出现调整,代码可能也要相应调整。

数据处理和报表呈现层面很难做到归类Organic Search,这里就不展开说了。

总结下,要想将m.baidu.com / referral 归到Organic Search,比较推荐的做法有两种,一种是通过自定义渠道分组的方式,这里已经有一个我新建好分享出来的,可以点击这个链接加入到你的视图下。另一种就是修改GA 基础代码,手动set 的方式,我也给出了可参考的代码。

以上有任何疑问,欢迎给我留言评论。

2 Thoughts on “获取可能遗漏的搜索关键词及其排名信息(下)

  1. 感谢分享, 我有一个问题,在自己测试的时候,使用新标签页打开搜索结果,搜索结果页的 referr和直接打开是一样的,不知道为啥和您文章出现的内容不一样,可是我的网站确实存在m.baidu.com / referral

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

Post Navigation