Total Pageviews

Tuesday, 24 March 2020

流量分析那些事儿

流量分析能为网站提供关键运营数据,大型成熟的网站都有不同类型的流量分析。互联网行业常用Analytics来描述流量分析,实现方式有多种:浏览器端、网页端、网络环节、服务器端。本文只是简单扫盲,欢迎各位行家拍砖。

浏览器端

比如你的浏览器安装了某种流量分析插件,那么这个插件可能将你的所有浏览数据传到分析公司的数据库,常见的如 SimilarWeb. 如果你的浏览器装有流量分析插件,那么无论你是通过代理、VPN、Tor访问网络,你的真实IP地址、操作系统、浏览器指纹等信息都会被分析公司搜集。很明显浏览器端的流量分析危险等级最高,这也是为什么某些极权政府热衷于推广国产浏览器的原因。详见这里。

Cookies

网页端的流量分析通常是通过cookies和网页插件来实现的。Cookies是很多网站必不可少的元素,但凡要你登录操作的网站都需要cookies,它是网站分发给你的一个临时记号。

打个比方,你晚上去兰桂坊这样的夜店街玩,每进一个场子,夜店保安就会在你手臂上盖一个他们特有的图案,这样你出去吃完烧烤或打个电话回来,门口保安检查你有这个章就可以直接让你进去,而不是让你重新买票。Cookies就是网站给你的浏览器盖的章,但网站不会像夜店那样给每个客人盖同样的章,而是会给每人一个唯一的临时号码,这样网站不但知道你什么时候来的,还知道你是你而不是同时登录网站的张三或李四。人类保安能根据外表和声音来区别你跟张三李四不是同一个人,而你的长相声音具有唯一性。

Cookies有什么危险呢?想象一下你在夜店一条街从9点玩到6点,回家刚好撞见你老爸出门晨练,你刚打算拿出事先练得滚挂烂熟的瞎话说自己昨晚同学聚会喝醉了住远近闻名的老实人刘帅家,结果你老爸二话不说一把拉起你的袖子,露出手臂上十多家不同夜店的章…… 所以,为了防止发生这种隐私泄露的尴尬,你得用一个关闭窗口就自动删除所有cookies的浏览器,你爸拉起你袖子的时候只能看到白白的手臂。

夜店章时间久了会自动消失,cookies同样会有长短不同的有效期,某些cookies能保存很长时间这样你每次打开这个网站都不需要再输入一次帐号密码,方便,但问题是隐私。而某些网站则给cookies设置了一个寿命,过期就不认了,就像夜店章一样,否则你买一次票就能天天免费去玩,夜店老板不亏死了?

Http Cookies也分不同总类,详见维基百科.

网页插件

有很多网站不需要使用Cookies,比如你现在正在看的这种根本不需要登录的静态页面。但网站是怎样知道自己的客流量多大,包括详细到具体内容的流量呢?通常有网页插件和服务器端两种方法。

网页插件可以是javascript或者图片。网站使用网页插件来分析流量的原因无外乎以下两点:
1. 方便 网页插件好用啊,比如Google Analytics能直接提供各种分析数据、图表,部署也比自己在服务器端安装分析软件方便多少倍。
2. 权威 你自己服务器上的流量分析只有你自己知道,遇到那种吹牛逼的人怎么办?明明浏览量只有1000它说是一百万,而第三方插件则可以在必要时,比如面对投资人或广告投放商直接展示出你的Google Analytics。
3. 不是自己的服务器 现在很多网站都可以不用自己的服务器就能搭建,比如你现在正在看这个就是托管在Github Pages上的。这种情况Github知道我的流量,但我自己不知道,所以我只能装网页插件来分析流量了。

网页插件很容易识别,你只需要在网页上点击鼠标右键,查看网页代码,就能看到插件了。好吧你不会读代码,当我没说。不过市面上有很多浏览器插件专门检测或屏蔽网页插件,常见的广告屏蔽器(Ad Blocker)或脚本屏蔽器 no script, 或者跟踪插件屏蔽器 uBlock Origin,都可以告诉你哪些插件有问题,或者直接帮你屏蔽掉它们。这样,你对于流量分析来说就是隐形的了。Cheers~

Note: 用户跟踪流量分析的网页插件的使用是一个极为普遍的现象,请在顶部导航栏查看本站所作的 简要统计

服务器端

你打开一个网站的过程大致如下:
1. 你的浏览器要先问DNS服务器你输入这个网址的服务器在哪里,DNS服务器告诉你的浏览器一个IP地址。
2. 然后你的浏览器就向那个IP地址的服务器发出请求,那个服务器在收到你的请求之后把网页文件传送给你的浏览器。
3. 你的浏览器把接收到的网页文件 渲染 成你看到的漂亮网页。

好吧,上述过程有点长,不过你反复读两遍就会发现这个过程有两个“服务器”知道你访问过这个网站的事儿。假如你访问的是pornhub,那么DNS服务器知道你曾经问过pornhub的网址在哪里,虽然你只是问了它pornhub怎么走,不代表你一定就去了pornhub,但,呵呵,come on,大家都知道问pornhub怎么走的人里头有99.99%都去了。第二个知道你访问过pornhub的当然就是pornhub自己啦,你向它要了网页呢,那还能赖掉?

不过,你对pornhub很信任,因为你知道pornhub绝对不会出卖你,否则这事儿传出去以后谁还敢去它那儿?DNS服务器就没办法了。

你是不是在想“我这次知道pornhub怎么走了,下次再去的时候就不用问DNS服务器了,这样DNS服务器就不知道我看过多少”。这个理论上是可以的,不过因为各种原因并不现实。像pornhub这种人民群众喜闻乐见的网站,至少有成千上万台服务器,名副其实的连锁店。你访问pornhub更像是在一个大城市里找中石化的加油站,你上次加油的地方现在可能排着长长的队,所以你每次加油前都得先查查哪个加油站不用排队。用夜店比喻的话,就是pornhub每次都会让接待你的服务生带你去一个空的卡座。所以一般来说,你还得每次都问DNS服务器pornhub怎么走。

服务器端的流量分析是无法避免的,服务器知道你在这里干的一切,如果你每次都换IP且不登录的话还好,服务器认不出你是同一个人,但如果你登录帐号的话……

网络环节

互联网是一张网,前面描述的打开过程只是在应用层面,看上去只有DNS服务器和网站服务器(Pornhub)知道这事儿。实际上在更底层的网络,你发送的和接收到的每一个数据包都是经过很多服务器层层接力转发,就像你在淘宝剁手之后包裹是由网店老板交给快递收件员,途经收件站,经货车转运到机场或火车站,经铁路或航空送到你的城市总站,再经两三次转发送到快递门店,再由快递小哥送到你(或者小区门卫大爷)的手上。这中间很多人都可能打开你的包裹偷看一下你买了个啥好东西,这中间的每个环节都可能记录下你买了多少东西,比如快递门店一查这个月给你发了多少条短信就能统计你这个流量了。互联网上的数据包传输在本质上跟上述实物包裹是一样的,只不过各种中转站是由各种昂贵的路由器、网关等设备构成,整个过程时间短一点而已(好吧,短几个数量级)。

所以,网络中除了DNS服务器能做流量分析外,还有很多环节可能做流量分析。顺便说一句,看到这里,你大概明白防火长城是怎么封锁你的吧?一种方法是像机场安检,一扫你的包裹里有把枪或者一个炸弹,直接就拦下来了。第二种方法,看到你的发件地址是不允许的地方(比如收件人:台湾总统府)直接拦下,第三种也是最廉价的方法就是当你问DNS服务器pronhub怎么走的时候直接告诉你一个错误的地址(DNS污染)。

好啦,回到正题,除了DNS方的分析,你的ISP服务商(就是每个月收你网费的公司,或者给你网用的组织)通常会分析你访问了哪些网站,因为你所有的流量都会经过它控制的服务器。用前面送快递来比喻,你的ISP服务商就是专门负责你那个片区的快递门店,你的公司或机构网络则相当于负责收发件的门卫大爷。

总结

前面这些分析无外乎是想告诉大家,不是只有你登录或访问的网站能够分析你在互联网上的活动,而且你的活动是否被记录和分析绝不仅能通过看一个网站的源代码发现。整个网络里有无数个环节可以用来分析和跟踪你,服务器有你的所有信息,网路中间设施有很多环节可以监听、审查你的信息流。当你凝视深渊的时候,深渊也在凝视你。保护隐私要从自己的电脑这边源头做起,而不是仅仅去指望或指责别人。