Knowledge-Base icon indicating copy to clipboard operation
Knowledge-Base copied to clipboard

利用 fingerprintjs2 区分用户设备

Open Dream4ever opened this issue 6 years ago • 0 comments

需求描述

CNZZ 上虽然能够统计每天有多少用户访问网站,但是不知道这些用户设备的具体信息。

IIS 日志中虽然能够查看完整的访问请求,但是如果要查看用户的实际 IP 或者其它信息,依然很不方便。

那么能否利用 fingerprintjs2 这样的库,为用户使用的每一个设备生成指纹,并记录到数据库中或者别的什么地方。

先用自己的 iPhone 7 简单测试了一下,结果如下:

# 微信
ID: 5de4****
UA: Mozilla/5.0 (iPhone; CPU iPhone OS 12_1_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/16D57 MicroMessenger/7.0.3(0x17000321) NetType/4G Language/zh_CN

# TIM
ID: fb1f****
UA: Mozilla/5.0 (iPhone; CPU iPhone OS 12_1_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/16D57 QQ/6.5.5.0 TIM/2.3.0.401 V1_IPH_SQ_6.5.5_1_TIM_D Pixel/750 Core/UIWebView Device/Apple(iPhone 7) NetType/4G

# Safari
ID: bbc8****
UA: Mozilla/5.0 (iPhone; CPU iPhone OS 12_1_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 Mobile/15E148 Safari/604.1

# Chrome
ID: 78b3****
UA: Mozilla/5.0 (iPhone; CPU iPhone OS 12_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/73.0.3683.68 Mobile/15E148 Safari/605.1
Client Moz Device OS Version like Kernal Gecko Uniq
WeChat Mozilla/5.0 iPhone; CPU iPhone OS 12_1_4 like Mac OS X AppleWebKit/605.1.15 KHTML, like Gecko Mobile/16D57 MicroMessenger/7.0.3(0x17000321) NetType/4G Language/zh_CN
TIM Mozilla/5.0 iPhone; CPU iPhone OS 12_1_4 like Mac OS X AppleWebKit/605.1.15 KHTML, like Gecko Mobile/16D57 QQ/6.5.5.0 TIM/2.3.0.401 V1_IPH_SQ_6.5.5_1_TIM_D Pixel/750 Core/UIWebView Device/Apple(iPhone 7) NetType/4G
Safari Mozilla/5.0 iPhone; CPU iPhone OS 12_1_4 like Mac OS X AppleWebKit/605.1.15 KHTML, like Gecko Version/12.0 Mobile/15E148 Safari/604.1
Chrome Mozilla/5.0 iPhone; CPU iPhone OS 12_1 like Mac OS X AppleWebKit/605.1.15 KHTML, like Gecko CriOS/73.0.3683.68 Mobile/15E148 Safari/605.1

从上面统计的 UserAgent 可以看出来,同一个手机,用不同的软件访问同一个页面,得到的 UserAgent 是不同的。

不过考虑到用户的实际使用场景,不管是用电脑还是手机来访问页面,一般都会固定使用一个浏览器,除非页面显示不正常,才会换浏览器。这么说的话,就用 fingerprintjs2 这个库来统计访客设备就行了,同一个手机不同软件的情况占总访问量的比例非常小,对统计结果造不成什么污染。

用部门的三星平板和自己的 iPhone 7 连上同一个 WiFi,然后上 ip138.com 查看外网 IP,发现分配到的是相同的 IP。这样的话,就说明同一个局域网下的设备,外网 IP 是相同的,所以没什么参考价值。

Dream4ever avatar Mar 21 '19 07:03 Dream4ever