本文转载自https://blog.catscarlet.com/201612122637.html

注:本文适用于网页版百度地图,同样适用于阿里的高德地图,以及搜狗地图等。

PC端打开网页版百度地图http://map.baidu.com/,不少用户都会发现,“哇,定位好准!”

不觉得奇怪么?

你的电脑上没有 GPS 模块,你的浏览器也没提示“网站想要获取您的位置”,那么百度地图是根据什么确定你的精确位置的?

正规网站都应该在需要获取用户地址时需要先经过用户同意。

 

分析

首先来思考一个问题:如何定位一个用户的真实地址?

有两种方法:

  • 根据用户的IP,通过运营商办理宽带时填写的资料;
  • GPS定位;

根据用户的IP,通过运营商办理宽带时填写的资料

这是比较正规的通过IP获取到所在地理位置的途径。以ipip和ip138为代表的ip库,也都是基于各电信运营商、网络服务的BGP/ASN数据而分析处理而得来的IP库。

IP是不断变化的,很多IP都是基于运营商随机动态分配的,所以同一个IP会在同一个运营商范围内不断变化,不会有固定的街道或者坐标,但因为运营商是固定的,所以变化范围也可以确定是在一个范围内。所以当你拿到一个属于北京联通的IP时,你就可以确定这个IP是属于北京地区的。根据其分布规律,还可以进一步缩小范围,比如海淀、昌平。

能根据IP获取到用户真实且具体地址的,只有电信运营商,其通过IP查到分配给的用户账户,再通过用户账户查询宽带报装时的街道地址。

GPS定位

这个技术就很好理解了,GPS本身就是定位技术,不需要运营商资料,只需要GPS模块就行了。

但我不觉得你的电脑上会装有GPS模块。没有 GPS 模块,百度地图又是根据什么确定你的精确位置的?

 

做一个实验

如果你是一级运营商的 宽带拨号上网 用户,请做一个实验:

  1. 打开网站http://www.ip138.com/https://www.ipip.net/,这个网站会告诉你你现在的IP,记录下来。
  2. 把你的路由器的 WiFi 功能关掉,或者把所有连接到这个WiFi热点的手机、平板电脑等设备关机,注意是关机,不是关 WiFi 或者 GPS定位。暂时没有必要像《窃听风云》那样连手机电池都抠下来。
  3. 重启你的路由器,或者重启你的光猫。(因为很多人连 WiFi 和 宽带是什么都分不清,对于蠢到这种程度的人,我建议你把你家的电闸都拉下来,不是你屋里的电闸,是楼道里的电闸,让屋里彻底断电)
  4. 再次打开网站http://www.ip138.com/https://www.ipip.net/,看看你的IP是否变化了。
  5. 如果IP变化了,使用电脑打开百度地图,看看你的定位信息,是否跑偏了。如果IP没有变化,请重复2-4步,或者放弃。
  6. 重复2-5步,看看是否每次都会出现定位信息不准,或干脆没有定位信息的情况。
  7. 打开你的 WiFi,打开你的手机,连接WiFi。保持你的IP不变(即不要重启光猫和路由,不要重新拨号),随便干点别的事情,玩玩手机,打打游戏,尤其是使用一下百度旗下的APP,比如百度外卖订个餐啥的。
  8. 一段时间后(可能是1分钟,也可能是几小时),再次使用电脑打开百度地图,看看定位信息,是否已经 非常准确 了?
  9. (可选)如果你了解安卓手机的模拟地理位置,那么,也就不用我多讲了,你知道该怎么做。

 

实验结论

上面这个实验,相信你会成功的。

那么如果真的成功了,意味着什么呢?在宽带账号和物理线路不变的情况下,更换上网IP时,百度定位地址也就会随之变化,可以做出推论,百度地图是根据用户上网IP来定位用户地址的。

 

 

首先说明一下,运营商登记的地址,属于运营商运营资料,虽然还没达到涉密的级别,但这个资料并不公开,也绝对不会在内部随意查阅,只有极少的人有权利获取 IP-物理地址 的权限,一般有权限的的运营人员的权限也最多只能到 账号-物理地址 的权限。唯一会涉及到这种查询的,就只有公安部门要根据IP上门走访的情况了。

珍藏多年的宝贝:

这是我在2011年时在某运营商工作时偷拍的照片。

百度再大又能大到哪里去,所以绝对不会使用这个方式,那么只剩下另一种途径了,GPS。但是你的PC有GPS模块吗?没有,你的什么设备上有GPS模块?导航仪?手机?平板?

 

通过用户已连接WiFi的手机偷偷获取GPS信息,并结合出口IP,获取IP对应GPS信息

这是某些大厂以不道德手段,通过用户已连接WiFi的手机偷偷获取GPS信息,并结合出口IP,获取IP对应GPS信息的,可以通过IP定位到精度与手机GPS精度相同的坐标。

这是一种流氓行为。

这个方法,只要用户更换IP(比如重启路由器),那么在其下次偷偷获取用户GPS信息之前,他的坐标就都是错的,会是上一次使用这个IP上网并且被定位的地址。

阿里的高德地图,以及搜狗地图,也会使用同样的方式偷偷收集用户地理位置。只不过他们的定位收集很慢,没有百度那么暴力。

 

高德地图:

 

搜狗地图:

 

你甚至可以使用一些国内的收费VPN实现全国漫游。

 

有什么危险

可以说目前看来,中国人对隐私和安全这两个词是毫无概念的。我在这里怎么解释大概都没用。

说一个我面临的问题

一般公司,都在网络出口部署了审计设备。原本这些设备是用于在工作时间段内,防止员工上班期间刷淘宝看视频或打游戏,并禁止访问非法网站或发表非法言论,这本身没什么问题。然而很多公司的这种审计设备问题很多,最明显的一点就是严重拖慢正常上网速度。

对于IT研发行业来讲,随时能连上网同步一些资料搜索一些有用资料是必要的,所以我在家里布置了一台私有云,并且启用了某个方法,让我可以通过家里的宽带搜索资料。因为是私有云,根本没必要对自己以外的人开放端口,所以不做端口映射,而是用方法让自己钻进家里的局域网中。某工具其实比想象中的更强大。

中国美术学院的学生用南山路的落叶装饰的艺术作品:纸飞机

照片来自tualatrix的INS,中国美术学院的学生用南山路的落叶装饰的艺术作品:纸飞机

 

按照理论上做一次中转会有双倍的上网延迟,然而实际上由于流量加密导致出口审计设备不得不放行这种流量,公司网速反而翻倍了,开网页再也不用等半天。而且我不做违法的事情,即使做了,也是有关部门上门到我家找我,不会连累公司。至于看视频打游戏,就公司这破网速?

审计服务的主动探测攻击我家中的服务器。我抓包分析过了,这个探测工具蠢得要死,除了HTTP什么都探不出来。

 

然而只要是我的流量传到家里,那么即使再强加密,点对点的传输流量记录还是会有的,公司仍然会记录到公司电脑的网卡MAC地址,以及家中宽带的IP。本来只是个IP,没什么大不了的,即使定位到北京市昌平区,公司也至少有十多个人住在这个区里面。但是由于百度会搜集你的信息,在某种意义上泄露你的真实地址。只要购买百度的高精度IP定位API服务,那么就可以根据IP,查到家在哪,按照百度自己的说法,精度在几十米到几百米不等,然而我说,他的这个精度刚好是WiFi信号的覆盖能力范围,而对于家庭用户,WiFi覆盖范围也就是那几十平米的房间,精度绝对在10米范围内。

老总拿到你的家庭住址,又拿到你的电脑网卡MAC,看着你每天的无法分析的加密流量,请你喝个茶讨论一下不是问题。

再举一个例子

作为有独立网站的人,服务器被攻击乃是家常便饭。前一阵子我的服务器被攻击,于是我查了一下攻击来源:

国外。看样子无能为力了?当然一看就知道这是一台跳板机,只不过攻击者实在是太不专业了,貌似是在攻击期间,把自己的手机也连入了跳板,泄露了自己的地理位置。虽然免费接口只能精确到街道,不过如果是有关部门的话,至少会大范围缩小搜索范围,再根据此区域内上行流量目的地址,轻轻松松定位到个人。

当然再次搜索这个IP时,发现物理位置变化了。这也有可能是个公用VPN,你知道国内VPN服务都是需要国家审核的吗?抓你更轻松。

 

2016年12月13日补充:

免费接口其实可以获得GPS等许多信息,如果有兴趣与地图API结合使用的话,精度会变得非常高。这里就有一个已经完成的例子,用某个垃圾评论的IP测试一下,效果拔群:

 

我都有点想把大家评论时留下的IP都试一遍的变态冲动了……

放弃争论

关于网页版百度地图是如何定位这个问题,在知乎上是有很多人讨论过的。知乎也不亏被称谓逼乎,很多对事情,尤其在技术和实现方式完全不了解的情况下,强答

 

长点心吧。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐