我们经常可以在影视作品中见到某某组织通过对某个人的 IP 地址进行监控,定位其位置,甚至精确到某栋大楼的某一层,如此可怕的场景在现实生活中真的有可能会发生吗?

先来说结果,仅通过 IP 地址最精确能够达到街道级别。而且在不通过运营商的用户数据库查询情况下,定位到家庭住址和单元楼的情况难度很高。

ISP

《互联网是如何工作的》一文中,我们介绍道,IP 地址是类似于现实世界中的地址这样的东西,通过 IP 地址,我们就可以在网络上定位到一台计算机,在现实世界中,IP 地址是由一个叫互联网服务提供商,即 ISP 提供的。

回想一下我们上网的过程:

去运营商(移动、电信、联通)办理宽带业务 -> 业务员上门拉线 -> 电脑连接宽带 -> 访问互联网

在这一过程中,三大运营商就是我们能接触到的 ISP 的,ISP 可以从互联网管理机构申请到很多 IP 地址,然后一些机构和个人从某个 ISP 获取 IP 地址的使用权,并可通过该 ISP 连接到互联网。

那么 ISP 又是如何标记 IP 地址的地理位置的呢?

我们先来说说 ISP 的三层结构。

三层 ISP 结构分为主干 ISP,地区 ISP,本地 ISP。本地 ISP 给用户提供最直接的服务,本地 ISP 可以连接到地区 ISP,也可以连接到主干 ISP。从原理上讲。只要每一个本地 ISP 都安装了路由器连接到某个地区 ISP,而每一个地区 ISP 也有路由器连接到主干 ISP,那么在这些相互连接的 ISP 的共同作用下,就可以完成互联网中的所有的分组转发任务。

这里我们通过计算机网络教材中的一张图来理解三层结构,如图 1 所示 👇

图1 基于 ISP 的多层结构的互联网的概念示意图

也就是说,当你向好友发了一条微信,这条微信首先会从你所在公司/学校的内网上发到当地的服务器,再从当地服务器发送到地区服务器,之后从地区服务器通过移动/联通/电信的服务器向你好友所在地的地区服务器转发,再通过本地服务器最终转发到好友所在公司/学校的内网。

如此一来,既然你的 IP 地址是由当地的 ISP 分配给你的,自然也就知道了你所在的 IP 地址的大致位置了。

IXP

在图 1 中,我们发现图中还有一个叫 IXP 的东西,这里简单扩展一下,还是以发微信为例,如果每次发微信的都将数据先发到本地 ISP,然后发到地区 ISP,然后再发到主干 ISP,通过这样的链路将数据传输到对方的设备上,显然是不合理的,如果流量过大,有没有什么优化方案?

显而易见,当然是有的,我们可以通过在低层 ISP 之间搭桥的方式,让流量不走主干 ISP,直接在地区 ISP 之间直接相连进行交换分组,这样一来可以降低延时,二来还可以降低费用(走高层主干 ISP 收费一定比直接走底层地区 ISP 贵)。

精确定位

通过上一小节的讲解我们知道了可以通过申请的运营商的地址判断你的 大致位置 ,这个大致位置可以精确到省市,如图 2 所示,我们在百度搜索 IP,就可以给我们返回本机 IP 所在的城市。

图2 百度获取本机 IP 位置

2016 年 8 月 26 日,百度地图高精度 IP 定位服务 API 正式上线。但是一年后,也就是 2017 年 7 月,开发者陆续收到百度终止高精度 IP 定位服务 API 的通知邮件。这里我不想讨论工程伦理问题,仅就其高精度 IP 定位服务,谈一谈个人理解。

  1. 用户手机里安装了百度的服务,比如百度地图 SDK
  2. 用户手机运行了百度的服务,比如使用百度地图进行导航,公交查询等等过程,都会让百度的服务运行起来
  3. 百度提供服务的同时,将当前的坐标,跟 IP 地址数据,当前时间,定位方式,WI-FI 信息,移动联通电信等运营商的基站信息,传送给百度的后台服务器中,后台服务器留存了这些数据,然后也用这些数据给用户返回了用户需要的内容。这个过程也就是百度的匿名采集信息过程。用户使用前必然都是许可了百度可以使用这些匿名数据。
  4. 百度提供了服务同时,自己收集了匿名数据。而这些数据中,就包括 IP 和 GPS 的对照数据。
  5. 利用这些数据,就可以计算出一个 IP 曾经在哪些范围被使用过,从而得到一个精确的范围数据,这个范围的中心点,就被认为是最接近用户的地点,同时还会把误差半径也计算出来。

通过上述分析可知,百度的高精度 IP 定位服务,其根本来源于百度匿名收集服务,它的源头则是:手机位置服务。可能百度收集这些数据并非出于泄露隐私目的,但是,大数据发展导致我们可以用各个数据源去拼凑一个完整画像,这也有意无意导致一个泄露隐私的结果。所以百度下线这一功能也是情理之中的。

扩展

延伸一下,获取到精确的定位我们可以做些什么?

在一篇名为《一种基于地理位置和兴趣点信息的用户细分方法》专利申请中曾写道:

通过将客户去过的地方来量化的勾勒出用户的类型,即所有客户不再被看成简单的数字,而是具有不同兴趣点(标签)的 个体。用用户的兴趣点来量化地勾勒出用户的具体细节轮廓。采用本发明方法得出的对用 户兴趣点的诠释在某些时候甚至能超过个体本人对自身的诠释和了解。

简单翻译一下上面的话就是,通过对你不同时间段所处的位置进行分析,可以将你进行一个归类,例如,喜欢运动的用户、学生用户以及喜欢购物的用户。在通过多维度的分析后,这套系统可能会比你自己更了解你。

当然了,这样的专利并不是只有这一家,国内互联网巨头们都有着类似的专利,比如腾讯的CN103456233A,阿里巴巴的CN106534392B,这些早就不是什么遮遮掩掩的东西了。就像李彦宏说的,中国人多数情况下愿意用隐私换取便捷性。虽然这是一种“被愿意”。


最后说一点,我写公众号也有 2 年多了,虽然每次都是看心情更新的,但总感觉通过写公众号的方式分享内容总还是有些单向,而且因为申请的晚,我的公众号也没有留言功能,总觉得自己的文章有些一言堂,但又觉得建立一个读者群会没时间管理。现在临近毕业,工作也基本定下来了,想着未来几年可能都会在这一领域发展,所以还是决定建一个读者群。我会在群里邀请我的一些同学和朋友,前后端的都有,这样也可以方便大家更主动的双向沟通,不知道会有多少人响应,就先试试看。如果群二维码失效了,你可以通过第二个二维码添加我的微信拉你进群。