用户来源是网站数据分析中一个重要的指标,然而想要准确的统计来源却并没有唯一的方法。下面我们针对获取来源的方式、来源的定义做一些具体的阐述;并且以 sensorsdata.cn 这个网站为例来做具体的来源分析。

1.前端获取来源的两种方式

1.1 通过给页面加自定义参数来标志

第一种方案,是通过给页面加自定义参数来标注用户的来源,我们暂且把这个来源叫做from

例如,我们将这个地址www.sensorsdata.cn?from=weibo通过营销人员在微博中转发,然后我们网站通过解析参数from就能取到来源weibo。 
对于这里的 from 这个自定义的参数,谷歌有个标准。一般来说可以用utm_source=weibo这样来标记来源。其他的还有utm_medium utm_campaign utm_content utm_term等等,可以自行搜索下。

1.2 通过referrer实现

第二种方案,是通过用户访问的referer来定义用户的来源,我们暂且把这个来源叫做referrer

比如用户在 baidu 中搜 'sensorsdata',然后跳转到了 'www.sensorsdata.cn'。那我们通过document.referrer能取到来源是'http://www.baidu.com/link?url=2fhHMI-7QopsGnGaJppRU8suX290yzANr3PNY8fupUy&wd=&eqid=bbd4f5c00001ec4a0000000356a83851'。

由于referer的 URL 可能取值太多,那么更进一步,可以专门取一下 referer 的 host,用这个来做来源的标志。

1.3 两种来源的综合

如上面所描述的那样,我们会有两种来源方式,一个是我们做标记的来源 from,一个是固有的 referrer。我们既可以把这两个来源都统计,也可以先取自定义标签 from 再取 referrer(示例如下)。

if(自定义from){  来源 = 自定义from
}else{来源 = document.referrer
//因为referrer取的过长,可以只取host如`baidu.com`来源 = 只截取referrer的host
}sa.track('user_from',{from:来源,detail:document.referrer})

2. 来源的3种定义

2.1. 用户首次打开页面的时候的首次来源

在这里,我们把用户首次打开页面的时候的首次来源叫initial_referrer。 这里的 referrer 可以作为用户的固有属性,类似于姓名,也即是 Sensors Analytics 中的 profile 属性。

在 JS-SDK 中可以这么实现:

//在引入js-sdk后加入以下代码
sa.setOnceProfile({initial_referrer:document.referrer})

这个来源只会 set 一次,也就是一个浏览器端,只会有一个来源。

2.2 一个访问周期内的访问来源

一个访问周期,也即用户打开浏览器到关闭浏览器这个周期内的第一次来源,我们把他叫做session_referrer

正常情况下,我们可以设置一个不加时间的 cookie 来标志这个网站的session周期。然而我在测试了一些浏览器后,发现并不理想。mac下safari和firefox,直接按关闭按钮关闭浏览器,cookie还是存在的,但是点浏览器退出后,cookie是会清除掉的。而在mac下的chrome浏览器,设置cookie后,关闭浏览器,重新打开还是会存在。所以通过这个方式并不靠谱。 
不过我们可以通过设置一个限时的cookie来实现,比如60分钟的session周期。这样所有浏览器都能实现。也就是用户打开页面,然后60分钟内的操作,这里的来源都认为是一个来源。60分钟后再打开页面,就认为是新的来源。

//页面打开后
if(cookie中取到startFrom){  来源 = cookie中的来源
}else{来源 =  当前来源setCookie('startFrom', 当前来源, 60分钟)
}

2.3 每个页面的访问来源

这个就是通常意义上的referrer 了,在每个页面访问时,都取referrer。

3. sensorsdata.cn的来源分析

sensorsdata会获取initial_referrerinitial_from

sa.setProfileOnce({  initialReferrerUrl: document.referrer,initFromUrl: '根据url解析出来的来源'
})

sensorsdata会在每次页面打开的时候,取from和referrer

sa.track('page_open',{from:'解析url来源',referrer:document.referrer,referrerHost:''})

当然这里会有重复,如果是自己网站内的跳转,如果需要过滤的话,可以自行做判断过滤。

4. 其它

客户 A 只想取某个页面的自定义来源做为需求的来源

if(这个页面有自定义来源){  sa.setProfileOnce({fromUrl:自定义来源});
}

干货:如何在前端统计用户访问来源?相关推荐

  1. 分享三个网页访问(点击)统计脚本,展示访问来源地图分布

    分享三个网页访问/点击统计脚本,展示访问来源地图分布 1. Flag Counter 2. Revolvermaps 3. 蝴蝶计数器 总结 首先简单展示一下三个脚本的效果; 左边的是FlagCoun ...

  2. kibana可视化统计_用户访问统计PV-IP-UV数据

    kibana可视化统计_用户访问统计PV-IP-UV数据 准备 点击可视化->点击添加 新建一个可视化New Visualization->选择Data Table 选择索引如图: 默认有 ...

  3. \t\t最近两周访问来源统计

    最近两周访问来源统计 数据来源 http://hi.baidu.com/lu_mh 166 http://www.baidu.com/s?wd=睡觉出汗&oq=睡觉&f=3&r ...

  4. 网站用户访问速度监测分析项目

     刚来新公司不久做运维开发,本为以为要继续做我的开源软件开发,结果领导给分了个以前基本从来没考虑的任务,监测用户访问我们网站的速度,没错,是监测所有的用户访问我们网站的速度. 刚来新公司不久做运维 ...

  5. js记录用户访问页面和停留时间

    1.setInterval setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式. setInterval(code,millisec[,"lang" ...

  6. vue和小程序哪个好学一点_litemall,Spring Boot后端,微信小程序用户前端 + Vue用户移动端...

    litemall 又一个小商场系统. litemall = Spring Boot后端 + Vue管理员前端 + 微信小程序用户前端 + Vue用户移动端 注意: 由于第一次加载数据量较大,建议wif ...

  7. 好程序员web前端干货之web前端开发框架汇总

    好程序员web前端干货之web前端开发框架汇总,其实一个前端开发框架其实就是一系列产品化的HTML/CSS/JavaScript组件的集合,我们可以在设计中使用它们.前端开发框架有很多,其中有一些写得 ...

  8. CDN加速下如何识别和限制访问来源

    前言 大多数提供CDN服务的云厂商,基本上都为客户提供了黑白名单(限制单个ip或网段),地域限制(限制某些地区的访问),鉴权(使只有符合规则的用户才可访问)或异常流量的监控和限制等功能.实现了基本的加 ...

  9. 【面试题】当用户访问网站是很慢有哪些原因?

    问题:当用户访问网站是很慢有哪些原因? 问题场景:某个用户向你反映说开发的网站访问速度很慢,但是该用户访问其他问题很正常,分析下,有哪些工具分析原因.怎么解决问题? 一.针对这个题目我们可以简单理解成 ...

最新文章

  1. 【python编程导论】我想和你探讨下如何去写好程序
  2. Windows下Node.js开发入门(1)
  3. 基于SpringJDBC 实现关键功能-ClassMappings
  4. elasticsearch索引结构和配置优化
  5. Java Servlet总结
  6. 如何使用links方式安装Eclipse插件
  7. 语音转文字的软件APP
  8. 金融科技的别样财报:趣店坎坷后回暖、品钛首盈利
  9. C#转换人民币大小金额
  10. 推荐一个Oracle数据库学习的网站
  11. UI自动化报错Can not connect to the Service解决方案
  12. golang:goredis库pipeline使用方式
  13. android banner停止轮播,android如何实现banner轮播图无限轮播效果
  14. 国际清算银行:多国央行进行CBDC研究 仅少数推出具体计划
  15. 医院信息管理系统源码 HIS系统源码
  16. 1001: 植树问题 ZZULIOJ
  17. toFixed() is not a function toFixed方法数字类型才能使用
  18. java商城系统和php商城系统哪种好些?
  19. 浪潮优派培训笔记:Tomcat服务器
  20. 深度学习图像视频压缩技术

热门文章

  1. mysql 5.7源码包安装教程_MYSQL5.7源码包编译安装
  2. linux系统怎么用vim,linux/unix
  3. linux kernel 进程管理,Linux内核 | 进程管理
  4. python中的and与or
  5. matlab命名文件保存在哪里,用Matlab给整个文件夹下的文件分别重命名
  6. python串口通信_python通信串口pyserial安装及常用语句
  7. mybatis插入mysql出现中文乱码
  8. vue学习:v-text,v-html, v-model, {{}}之间的异同
  9. 离散制造业的数据采集之路
  10. el-table中每列设置同样的宽度导致表格宽度没法实现100%布局