超简单的 Python 根据用户ip查询位置

通过用户IP查询用户位置网上已经有这样的入口,很多都可以查,我这里使用了IP138的查询服务。这网站也是挺逗的,首页丑的不要不要的,登陆之后的页面却好看很多。

首先注册一个ip138账号并登陆,在用户中心,IP查询服务中购买次数。我本来都准备掏钱了,没想到居然是免费的……..注册就送了10W积分,查询10W次只要500积分…..蜜汁便宜,也是挺良心的。

这里写图片描述

之后点击左侧进入IP查询服务,获取token码:

这里写图片描述

接下来就简单了,进入IP查询,代码示例页面,如下图:

这里写图片描述

这里有两点要注意:
注意1:新版本py

<think>我们正在讨论如何通过IP地址查询地理位置信息。根据用户需求,我们可以参考两种方法:使用在线API服务(如ipinfo.io)和使用离线数据库(如IP问问)。引用[1]展示了使用Python通过ipinfo.io API查询IP地址地理位置的示例代码。引用[2]则提到银行使用离线库(IP问问高精准版)进行定位,并将IP定位位置与GPS位置交叉核验。因此,我们可以提供两种主要方法:1.使用在线API服务(适合普通用户或开发者,需要网络连接)2.使用离线数据库(适合对隐私或实时性要求高的场景,无需每次请求外部API)下面分别介绍这两种方法。</think>### 如何使用IP地址查询地理位置信息 通过IP地址查找地理位置主要有两种技术方案,以下为详细说明: #### 一、在线API查询(实时获取) **原理**:通过HTTP请求向第三方地理定位服务商获取数据 **实现步骤**: 1. 选择服务商:如 ipinfo.io、IP2Location 或 MaxMind 2. 发送API请求:将目标IP作为参数 3. 解析返回的JSON数据 ```python import requests def get_ip_info(ip_address): try: response = requests.get(f"https://ipinfo.io/{ip_address}/json") data = response.json() return { "IP": data.get("ip"), "城市": data.get("city"), "地区": data.get("region"), "国家": data.get("country"), "坐标": data.get("loc"), "运营商": data.get("org") } except Exception as e: return f"查询失败: {str(e)}" # 示例:查询本机IP的地理位置 print(get_ip_info("")) ``` **输出示例**: ``` { "IP": "180.76.76.76", "城市": "北京", "地区": "北京市", "国家": "CN", "坐标": "39.9075,116.3972", "运营商": "AS56040 China Unicom" } ``` #### 二、离线数据库查询(本地化部署) **原理**:使用本地IP地理数据库文件(如IP问问高精准版) **优势**: - 无需网络连接 - 响应速度快 - 数据隐私性高 **典型应用场景**: 银行系统通过IP定位与GPS位置交叉核验用户身份[^2],降低信贷风险 ```python import geoip2.database def offline_ip_query(ip_address): with geoip2.database.Reader('GeoLite2-City.mmdb') as reader: response = reader.city(ip_address) return { "国家": response.country.name, "城市": response.city.name, "纬度": response.location.latitude, "经度": response.location.longitude } # 示例:使用MaxMind数据库 print(offline_ip_query("8.8.8.8")) ``` #### 三、方案对比 | 特性 | 在线API | 离线数据库 | |--------------|----------------------------|---------------------------| | 数据更新频率 | 实时(小时级) | 定期更新(周/月) | | 响应速度 | 依赖网络(100-500ms) | 本地查询(<10ms) | | 适用场景 | 简单查询、开发测试 | 金融风控、高频查询系统 | | 成本 | 免费额度+按量付费 | 数据库授权费(一次性) | > **精度说明**:IP定位精度通常为城市级(误差3-5公里),移动设备IP可能因运营商路由导致定位偏差[^1]
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值