遇到一个需要查询 IP 地理位置的需求,以前用过 ipip.net 提供的免费离线数据库,提供国家和省市级别,完全够用,但现在怎么也下载不了,下载的时候总提示我要激活手机号,要想购买付费版本必须要以企业邮箱来联系工作人员……。ipinfo.io 提供的免费离线数据库只支持查询到国家级别,我需要省市信息,也用不了。

找了一圈发现阿里云的日志服务中提供了 IP 地理位置的函数,支持查询省市级别。虽然它是收费的,但它是按日志的索引和存储量付费,很便宜,IP 地理位置查询属于免费功能。对比直接购买离线数据库所要的费用和时间,几乎可以忽略不计。

先把要查询的 IP 放到 CSV 文件中上传到阿里云的对象存储里,然后在日志服务里新建一个日志存储,从对象存储导入 CSV 文件到日志存储中重建索引。接下来就可以在日志服务里通过 SQL 查询语句来查询 IP 地址位置了。提供有 ip_to_city, ip_to_country, ip_to_province 等函数来查询 IP 地址对应的地理位置,查询后导出结果到本地就可以了。

注意,用完记得删除日志存储和对象存储中的文件,避免产生不必要的费用。下次需要的时候再重新上传新的 CSV 文件到对象存储中,导入到日志存储中重建索引,查询导出。🍻