IP定位是一种非常广泛的定位手段。虽然现在GPS定位和Wifi、基站定位技术已经很成熟了,但是在获取不到上述信息的情况下仍然需要依赖IP定位,除了这个IP定位有其本身独特的优点:定位时间短、耗电量低。IP定位的精度一般比较低,通常是城市范围,但是可以通过一些手段使得IP定位的精度在1km以内,我们称之为精确IP定位。
普通的IP定位在互联网上有很多公共的服务API,各个大公司也都有自己的IP库,比如百度有自己的哥伦布IP库,精度都在城市级别。那么我们怎么做到精确IP定位呢?
IP种类
- 宽带IP:IP位置分布的区域比较广,IP请求量不大,IP请求用户在某段时间只有一个用户在使用。(联通、电信这样的公司使用的自己的出口,每次重启更换一次。而其他宽带是租用的联通或者电信网络,所以ip地址有可能会出现在其他城市)。
- 基站IP:IP位置分布区域较广,一个基站动态的对应几个IP,IP请求量大,IP请求用户繁多,根据请求到响应的时间长短来判断。有时候一个省份的基站都从同一个出口IP出去。
- 运营商部署的wifi IP:通过对公司附近的ip的验证,怀疑是每个wifi都有独立的ip,可以定位到小片区域。
- 固定IP:IP半径较小,位置稳定。比如公司的出口IP地址。
上面四种IP,基站IP范围是最大的,甚至覆盖整个省份,宽带IP、Wifi IP、固定IP是有可能做到精确IP定位的。
IP位置预测
为了预测IP精确位置,我们使用IP和基站、wifi相结合的方法,用户访问服务端时候同时带上基站、wifi和IP地址,这样我们通过对基站和wifi定位就得到了IP地址的一个候选位置,这样的候选位置多了之后,就可以精确的推断出某个IP的精确位置。当然,类似基站IP的候选位置可能会覆盖整个省份,这样的IP是没有精确位置的。
定位问题
- 宽带IP更换频繁:宽带网络每拨号一次换一次IP,甚至24小时会自动更换。另外更换IP的范围也不固定,比如长城宽带会在全城市范围内换IP。
- 某些浏览器走的是代理IP,而不是用户本身的IP,比如UC浏览器。
- 基站IP范围太大,需要其他额外信息来辅助定位。
- 等等
后续调研
- 客户端或者浏览器传输尽量多的额外信息到服务端,这些额外信息可以当做指纹信息用来辅助IP定位。
- 尝试用用户前几分钟的定位位置当做当前位置。如果有产品矩阵,各个产品内同一个用户的位置可以共享。
- 使用Tracert-Route命令,研究IP跳和IP位置之间的关系。也许能找到宽带IP的网关IP,某个网关IP可能对应着一片区域。
- 研究IP段和单个IP的关系,在位置上是否相近,如果有这样的关系可以扩大IP定位的召回率。
- 调研基站IP和宽带IP的网络原理,看看有没有什么规律。