uniCloud云对象调用第三方接口,根据IP获取用户归属地的免费API接口,亲测可用

ops/2024/11/13 7:39:50/

需求

在2022年5月初,网络上各大平台上,都开始展示用户IP属地,在某音、某手等小视频平台以及各主流网站应用中,都展示IP归属地,如下图所示:
在这里插入图片描述

解决办法

收费文档的肯定有很多,基本你百度搜“归属地免费API”,搜出来的都是那种免费多少次的,后续要收费的那种,真正免费的很少,这些年也用了几个归属地API接口,运行一段时间发现挺稳定的,给大家推荐一下。

1)高德地图IP定位

地址:
https://lbs.amap.com/api/webservice/guide/api/ipconfig,
优点:
高德地图的这个api查询速度很快,很好用,调用方法还是挺简单的。

缺点
有次数限制,个人认证开发者:日配额(5000次/日),企业认证开发者:日配额(100000次/日),理论来讲一般用户量不大的项目,使用高德地图的IP定位获取用户的归属地,已经够用了,如果不够用那只能再去花钱买流量包了,或者使用第二种推荐方式。
在这里插入图片描述

2)太平洋网络IP地址查询Web接口

地址:
https://whois.pconline.com.cn/

优点:
接口类型丰富,支持各种方式的调用,返回的类型也比较丰富。

缺点
编码类型‌GBK,有可能没处理编码返回的是乱码,速度上不如高德地图相应快。

实现方法

1)前端客户端调用

可以直接在客户端进行调用,以uniapp为例,使用uni.request调用第三方接口,示例代码:

uni.request({url:"https://whois.pconline.com.cn/ipJson.jsp?json=true",method:"GET",success:res=>{console.log(res);}
})

在客户端调用接口,会出现跨越问题,可以参考下面的视频学习,解决uniapp项目跨越问题。
学习地址:https://www.bilibili.com/video/BV1rt421V7Kc/

2)uniCloud服务端调用

前端调用接口出现跨越问题,原因是因为浏览器的同源策略,也就是说前端无法直接发起跨域请求。
使用服务端uniCloud调用第三方接口就可以了,让云对象返回结果,uniCloud云对象是可以允许跨域的。
代码如下:

module.exports = {_before: function () { // 通用预处理器},async getAddress(){let province;		let {clientIP} = this.getClientInfo();		try{let {data:{pro}} = await uniCloud.request({url:"https://whois.pconline.com.cn/ipJson.jsp?json=true&ip="+clientIP,method:"GET",timeout:2000})province = pro || "未知";			}catch(err){province = "未知";	}return province;		}
}

上面是uniCloud云对象封装了一个getAddress方法;

  • this.getClientInfo() 获取用户客户端信息,解构出clientIP,用户的IP地址
  • uniCloud.request在云对象调用第三方接口,用法和客户端的uni.request方法几乎一致
  • 设置超时时间2秒钟,超过2秒或者接口出现问题,直接返回未知,避免接口出现问题而导致过长的时间等待

总结

上面重点给大家介绍了根据用户ip地址获取归属的免费api接口;
介绍云对象可以使用uniCloud.request调用第三方接口;
感谢大家的观看,如果帮助到你,不要忘了给点赞支持一下,谢谢。


http://www.ppmy.cn/ops/132473.html

相关文章

数据结构题集-第二章-线性表-两单链表合并

说明 本文参照严蔚敏《数据结构(C语言版)题集》一书中包含的问答题和算法设计题目,提供解答和算法的解决方案。请读者在自己已经解决了某个题目或进行了充分的思考之后,再参考本解答,以保证复习效果。由于作者水平所限,本解答中一…

A股需要分析的数据

1. 大盘全面分析 在这一部分,我们将深入探讨大盘的整体健康状况,包括潜在的风险和可能的机会。 1.1 系统风险评估 首先,我们将评估当前市场是否存在系统性风险。这包括全球经济状况、地缘政治局势、以及宏观经济政策的变化对市场的整体影响…

docker镜像文件导出导入

1. 导出容器(包含内部服务)为镜像文件(docker commit方法) 原理:docker commit命令允许你将一个容器的当前状态保存为一个新的镜像。这个新镜像将包含容器内所有的文件系统更改,包括安装的软件、配置文件等…

SpringBoot3中swagger无法使用

前言 springboot 3开始javax包改成了jakarta,而swagger-oas等包中依然使用的是javax,所以报错。另外springfox已经停止更新有段时间了,并且不支持OpenAPI 3标准,升级Springboot 3.0以后会有更多问题暴露出来。而SpringBoot 3只支…

基于51单片机的温控电风扇proteus仿真

地址:https://pan.baidu.com/s/1vgYgY41tp_axxVFTHAPwFg 提取码:1234 仿真图: 芯片/模块的特点: AT89C52/AT89C51简介: AT89C52/AT89C51是一款经典的8位单片机,是意法半导体(STMicroelectron…

[含文档+PPT+源码等]精品基于Python实现的django房屋出租系统的设计与实现

基于Python实现的Django房屋出租系统的设计与实现背景,主要源于以下几个方面: 一、房屋租赁市场的现状和需求 在现代社会,随着人口流动性的增加和城市化进程的加速,租房需求日益增长。传统的房屋租赁市场存在信息不对称、效率低…

设计模式之抽象工厂模式(替换Redis双集群升级,代理类抽象场景)

前言: 看了很多书、学了很多知识,多线程能玩出花,可最后我还是写不好代码! 这就有点像家里装修完了买物件,我几十万的实木沙发,怎么放这里就不好看。同样代码写的不好并不一定是基础技术不足,也…

VMware 虚拟机使用教程及 Kali Linux 安装指南

VMware 虚拟机使用教程及 Kali Linux 安装指南 在现代计算机科学与网络安全领域,虚拟化技术的应用越来越广泛。VMware 是一款功能强大的虚拟化软件,可以帮助用户在同一台物理机上运行多个操作系统。本文将详细介绍如何使用 VMware 虚拟机,并…