Knowledge-Base
Knowledge-Base copied to clipboard
利用 fingerprintjs2 区分用户设备
需求描述
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 |
|---|---|---|---|---|---|---|---|
| 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 是相同的,所以没什么参考价值。