1. 多域名打通

多域名打通是神策 Web JS SDK 的一项功能,可以将两个不同域名的网站上的用户行为统一,它可以让您更有效地观察相关网站用户的转化历程。

2. 集成SDK

2.1. 下载 SDK

 GitHub 仓库中下载 Web JS  SDK,将 sensorsdata.min.js (集成跨域打通插件的 JS 文件) 放在您当前项目的文件夹下,详细集成步骤请参考 Web JS  SDK 集成文档

dist
├── web
    ├── plugin
    │   ├── plugin-xx
    │   │   ├── index.es6.js
    │   │   ├── index.closure.js
    │   │   ├── index.js
    |── sensorsdata.es6.js
    |── sensorsdata.js
    |── sensorsdata.amd.js
JS

2.2. 代码示例

<script charset='UTF-8' src="在 github 下载新版本的 sensorsdata.min.js "></script>
<script>
	var sensors = window['sensorsDataAnalytic201505'];
	sensors.init({
  		server_url: '数据接收地址',
		is_track_single_page:true, // 单页面配置,默认开启,若页面中有锚点设计,需要将该配置删除,否则触发锚点会多触发 $pageview 事件
		use_client_time:true, 
  		send_type:'beacon',
		heatmap: {
			//是否开启点击图,default 表示开启,自动采集 $WebClick 事件,可以设置 'not_collect' 表示关闭。
			clickmap:'default',
			//是否开启触达图,not_collect 表示关闭,不会自动采集 $WebStay 事件,可以设置 'default' 表示开启。
			scroll_notice_map:'not_collect'
		}   
	});
	//part_url 配置 sensorsdata.cn 和 example.com 后,会在神策分析环境中实现用户统一,从而实现跨域打通
  	sensors.use('SiteLinker',
    	{
			linker: [
      			{part_url: 'sensorsdata.cn', after_hash: false},
      			{part_url: 'example.com', after_hash: false}
    		],
			 // 该配置设置为 true 后,如果从已登录的页面跳转过来,即使当前网页已经登录,当前网页仍然会以之前网页的登录 id 再次登录。
		 	 re_login: true
		}
  	);
	sensors.quick('autoTrack');
</script>
CODE

3. 参数配置

re_login, 该参数配置在插件参数最外层,参考代码示例。该配置设置为 true 后,如果从已登录的页面跳转过来当前网页,即使当前网页已经登录,当前网页仍然会以之前网页的登录 id 再次登录。


part_url ,配置值为打通网站网址的一部分,即配置的 part_url 字符串必须为打通网址的 URL 的子字符串,不能为空且此字符串至少为 'x.',x 为任意字母或数字。建议配置时配置为打通网站的域名。

希望打通的网域配置神策 a 标签 href 地址来源网域是否登录状态a 标签打通结果

sensorsdata.cn

example.com

{part_url:'example.com', after_hash: false}
{part_url:'sensorsdata.cn', after_hash: false}

https://www.sensorsdata.cn/auto

https://www.sensorsdata.cn/auto?_sasdk= 'u'+distinctID   
http://example.com/indexhttp://example.com/index?_sasdk= 'a'+distinctID

after_hash ,配置 _sasdk 参数在 URL 的 hash 部分(即 # 后部分)还是在 URL 的 search 部分(即 # 前的 ?部分)。必填属性,且属性值必须为布尔类型,即 true 或 false(默认建议填 false)。

urlafter_hash结果
http://example.comfalsehttp://example.com?_sasdk=distinctID
truehttp://example.com#?_sasdk=distinctID
http://example.com#indexfalsehttp://example.com?_sasdk=distinctID#index
truehttp://example.com#index?_sasdk=distinctID
http://example.com?a=007#indexfalsehttp://example.com?a=007&_sasdk=distinctID#index
truehttp://example.com?a=001#index?_sasdk=distinctID
http://example.com?a=007#index?b=001falsehttp://example.com?a=007&_sasdk=distinctID#index?b=001
truehttp://example.com?a=001#index?b=001&_sasdk=distinctID

4. 打通结果

A 域名页面B 域名页面打通结果说明
匿名 ID匿名 ID
  1. B 域名页面的匿名 ID 会被 A 的匿名 ID 替换
登录 ID匿名 ID
  1. B 域名页面的匿名 ID 会和 A 的登录 ID 执行 login
匿名 ID登录 ID
  1. B 域名页面的匿名 ID 会被 A 的匿名 ID 替换
  2. B 域名页面的登录 ID 会和 A 的匿名 ID 执行 trackSignup
登录 ID登录 ID
  1. 如果未配置 re_login ,不做任何处理
  2. 如果 re_login 配置值为 true,B 域名页面会以 A 的登录 ID 执行 login

注意事项:因为涉及到多个域名页面,会产生多个匿名 ID,所以使用该多域名打通功能,建议开启多对一。

5. 原理说明

Web JS SDK 默认生成一个唯一的 Distinct ID 并永久保存在浏览器中的 Cookie,用来标识用户。而 Cookie 是跟域名绑定的,所以用户 ID 的标识理论上是限定在了一个域名下。

通过在多域名间共享 Distinct ID,使多域名打通得以实现。Distinct ID 保存在浏览器的 Cookie 中,只有同一网域中的网页才能访问 Distinct ID。如果您拥有多个网域并希望将它们视为同一个资源,则需要设法在您希望分析的所有网域间共享 Distinct ID。

使用 sensorsdata.min.js 启用多域名打通后,需要您手动方式在页面初始化 SDK 代码中开启动跨域打通,只有 a 标签跳转和父元素是 a 标签跳转(父元素是 a 标签需要 JS SDK 版本在 v1.16.1 及以上)这两种情况可以实现跨域打通。

在需要打通的网域上,为 linker 参数的 part_url 属性配置值后,sensorsdata.min.js 将检查网址中的 a 标签的链接。如果找到了包含 part_url 的链接后,将提取该域名下的 Distinct ID 拼接到这个连接上,跳转到目标网域后,截取页面网址中的链接器参数,获取并替换当前域名下的 Distinct ID。

例如,想要实现 sensorsdata.cn 和 example.com  的跨域打通,您只需要在两个域名下集成神策 JSSDK,并均配置下面的代码即可实现跨域打通。在配置和运行后,sensorsdata.min.js 将自动监听页面 a 标签跳转,并在导航即将开始之前,为这些链接自动添加链接器参数。

当用户到 sensorsdata.cn 域名时,sensorsdata.min.js 将自动检查网址中的 a 标签的链接,如果找到了包含 part_url 的链接后,将提取该域名下的 Distinct ID 作为链接器参数拼接到这个连接上,跳转到 example.com  域名时,sensorsdata.min.js 将截取 _sasdk 参数,并将取到的 Distinct ID 替换 example.com 的 Distinct ID,实现两个域名间的用户统一。同理由 example.com 跳转到 sensorsdata.cn 也是如此实现跨域打通。