分享几个IP获取地理位置的API

这篇具有很好参考价值的文章主要介绍了分享几个IP获取地理位置的API。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

淘宝(适用国内外城市)

一、请求接口(GET):

https://ip.taobao.com/outGetIpInfo?ip=IP地址&accessKey=alibaba-inc

二、返回数据格式:

{
    "data": {
        "area": "",
        "country": "中国",
        "isp_id": "100017",
        "queryIp": "175.9.142.21",
        "city": "长沙",
        "ip": "175.9.142.21",
        "isp": "电信",
        "county": "",
        "region_id": "430000",
        "area_id": "",
        "county_id": null,
        "region": "湖南",
        "country_id": "CN",
        "city_id": "430100"
    },
    "msg": "query success",
    "code": 0
}

三、频次限制:

每个用户的访问频率需小于1qps

四、文档说明:

http://ip.taobao.com/instructions.html

五、代码片段:

package com.example.animalhome.utils;
import com.alibaba.fastjson.JSONObject;
import com.example.animalhome.utils.HttpClient.HttpClientUtil;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.HashMap;
import java.util.Map;

/**
 * 获取地址类
 */
public class AddressUtils {

    private static final Logger log = LoggerFactory.getLogger(AddressUtils.class);

    // IP地址查询
    public static final String IP_URL = "https://ip.taobao.com/outGetIpInfo";

    // 未知地址
    public static final String UNKNOWN = "XX XX";

    public static String getRealAddressByIP(String ip) {
        String address = UNKNOWN;
        // 内网不查询
        if (IpUtils.internalIp(ip)) {
            return "内网IP";
        }
        try {
            Map<String,Object> requestMap = new HashMap<>();
            requestMap.put("ip",ip);
            requestMap.put("accessKey","alibaba-inc");
            String rspStr = HttpClientUtil.httpClienOfGet(IP_URL, requestMap);
            if (StringUtils.isEmpty(rspStr)) {
                log.error("获取地理位置异常:{}", ip);
                return address;
            }
            JSONObject obj = JSONObject.parseObject(rspStr);
            String code = obj.getString("code");
            if (StringUtils.equals(code,"0")){
                JSONObject data = obj.getJSONObject("data");
                String region = data.getString("region");
                String city = data.getString("city");
                String country = data.getString("country");
                address = StringUtils.equalsAny("XX",region,city) ? country : String.format("%s %s", region, city);
            }
        } catch (Exception e) {
            log.error("获取地理位置异常", e);
        }
        return address;
    }

    public static void main(String[] args) {
        String realAddressByIP = getRealAddressByIP("175.9.142.21");
        System.out.println("归属地:" + realAddressByIP);
    }
}

IPIP(适用国内外城市)

一 、请求接口(GET):

http://freeapi.ipip.net/ip地址字串

二、返回数据格式:

["中国","广东","广州","","珠江宽频/联通"]

三、频次限制:

每天1000次

四、文档说明:

https://www.ipip.net/support/api.html

五、代码片段

package com.example.animalhome.utils;
import com.alibaba.fastjson.JSON;
import com.example.animalhome.utils.HttpClient.HttpClientUtil;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.List;

/**
 * 获取地址类
 */
public class AddressUtils {

    private static final Logger log = LoggerFactory.getLogger(AddressUtils.class);

    // IP地址查询
    public static final String IP_URL = "http://freeapi.ipip.net/";

    // 未知地址
    public static final String UNKNOWN = "XX XX";

    public static String getRealAddressByIP(String ip) {
        String address = UNKNOWN;
        // 内网不查询
        if (IpUtils.internalIp(ip)) {
            return "内网IP";
        }
        try {
            String rspStr = HttpClientUtil.httpClienOfGet(IP_URL + ip, null);
            if (StringUtils.isEmpty(rspStr)) {
                log.error("获取地理位置异常:{}", ip);
                return address;
            }
            List<String> list = JSON.parseArray(rspStr, String.class);
            address = StringUtils.isEmpty(list.get(2)) ? list.get(0) : String.format("%s %s", list.get(1), list.get(2));
        } catch (Exception e) {
            log.error("获取地理位置异常", e);
        }
        return address;
    }

    public static void main(String[] args) {
        String realAddressByIP = getRealAddressByIP("175.9.142.21");
        System.out.println("归属地:" + realAddressByIP);
    }
}

太平洋网络IP地址查询Web接口(适用国内外城市)

一、请求接口(GET):

http://whois.pconline.com.cn/ipJson.jsp?ip=IP地址&json=true

二、返回数据格式

{
    "ip": "175.9.142.21",
    "pro": "湖南省",
    "proCode": "430000",
    "city": "长沙市",
    "cityCode": "430100",
    "region": "",
    "regionCode": "0",
    "addr": "湖南省长沙市 电信",
    "regionNames": "",
    "err": ""
}

三、频次限制

不详

四、文档说明

http://whois.pconline.com.cn/#tabs-1文章来源地址https://www.toymoban.com/news/detail-770289.html

五、代码片段

package com.example.animalhome.utils;
import com.alibaba.fastjson.JSONObject;
import com.example.animalhome.utils.HttpClient.HttpClientUtil;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.HashMap;
import java.util.Map;

/**
 * 获取地址类
 */
public class AddressUtils {
    private static final Logger log = LoggerFactory.getLogger(AddressUtils.class);

    // IP地址查询
    public static final String IP_URL = "http://whois.pconline.com.cn/ipJson.jsp";

    // 未知地址
    public static final String UNKNOWN = "XX XX";

    public static String getRealAddressByIP(String ip) {
        String address = UNKNOWN;
        // 内网不查询
        if (IpUtils.internalIp(ip)) {
            return "内网IP";
        }
        try {
            Map<String,Object> requestMap = new HashMap<>();
            requestMap.put("ip",ip);
            requestMap.put("json",true);
            String rspStr = HttpClientUtil.httpClienOfGet(IP_URL,requestMap );
            if (StringUtils.isEmpty(rspStr)) {
                log.error("获取地理位置异常:{}", ip);
                return address;
            }
            JSONObject obj = JSONObject.parseObject(rspStr);
            String region = obj.getString("pro");
            String city = obj.getString("city");
            String addr = obj.getString("addr");
            address = StringUtils.isEmpty(region) && StringUtils.isEmpty(city) ? addr.replaceAll(" ","") : String.format("%s %s", region, city);
        } catch (Exception e) {
            log.error("获取地理位置异常", e);
        }
        return address;
    }

    public static void main(String[] args) {
        String realAddressByIP = getRealAddressByIP("175.9.142.21");
        System.out.println(realAddressByIP);
    }
}

到了这里,关于分享几个IP获取地理位置的API的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Nginx通过用户IP获取所在国家及地理位置

    Nginx是一款高性能、轻量级的Web服务器和反向代理服务器。它最初设计目的是为了解决C10k问题,即如何支持10,000个以上的并发连接。Nginx采用了事件驱动的异步非阻塞模型,可以在消耗较少的系统资源下处理更多的并发连接。由于其高性能和可靠性,Nginx逐渐成为了现代Web架构

    2024年02月09日
    浏览(50)
  • 利用Spring Boot实现客户端IP地理位置获取

    在当今互联的世界中,了解客户端的地理位置对于提供个性化服务和增强用户体验至关重要。无论是根据地区偏好定制内容,还是确保符合本地法规,访问客户端IP位置都是一项宝贵的资产。如抖音评论区、用户页都会展示用户的IP属地信息。 在本文中,我们将探讨一个Spri

    2024年02月20日
    浏览(62)
  • 如何获取用户请求的真实ip,并返回访问者的ip地理位置?node,vue

    方式1、前端调用免费公共接口获取 前端获取访问者的真实的外网ip,可以通过调用接口https://api.ipify.org/来获取。你也可以直接在网页上访问它来看自己的外网ip。 ipify介绍: ipify是一个免费的公共 API,用于获取设备的公共 IP 地址。它通过查询服务器获取用户的 IP 地址,并将

    2024年03月15日
    浏览(46)
  • Java编程技巧:获取ip地址、通过ip获取地理位置、获取客户端操作系统、获取客户端浏览器、获取主机名、获取操作系统、获取系统架构

    说明: 大家直接去对应项目位置找到代码,然后看着复制就行了 1.1、若依(自己写的代码) 项目:https://gitee.com/y_project/RuoYi 子模块:ruoyi-common 所在类:com.ruoyi.common.utils.IpUtils 所在方法:getIpAddr 详细位置:整个方法 1.2、Snowy(借助hutool工具包) 项目:https://gitee.com/xiaonuo

    2024年02月04日
    浏览(128)
  • Unity之获取用户地理位置

    1.1 利用bilibili的api 【未知稳定性】 lua代码  1.2 利用baidu api 【配额超限,需要扩充配额,需要联系官方】 2.1 API: \\\"https://api.ipify.org\\\" 和 心知天气官网“心知天气 - 高精度气象数据 - 天气数据API接口 - 行业气象解决方案” 获取公网IP 根据IP获取地理信息和天气信息,json反解析

    2024年02月14日
    浏览(42)
  • 使用uniapp开发获取地理位置

    老板要求做一个微信小程序,后面又希望能转为app. 所以选择了uniapp开发. 我的体验和感想就是以后不用uniapp了. 资源不多,学习了可能用处也不大.适合外包的干.这里写一下使用uniapp开发微信小程序获取地理位置 基本逻辑是使用uniapp的api首先获得地理经纬度位置等信息(在这之前

    2024年02月07日
    浏览(50)
  • Unity 获取手机地理位置信息

    在游戏的开发过程中,有时候会遇到需要获取玩家位置信息的需求,比如显示玩家所在的国家城市等。 有一下方法可以参考: 可以根据手机的地区和语言来做判断。 根据IP来判断所处的位置,阿里云啥的都有对应的接口服务。 根据GPS来判断。 以上方法都各有利弊吧,这里简

    2024年02月12日
    浏览(50)
  • ip地址和地理位置有关系吗

    在互联网时代,网络已经成为了人们生活中不可或缺的一部分。而在网络通信中,IP地址扮演着非常重要的角色。那么,IP地址和地理位置之间是否有关系呢?虎观代理小二二将从以下几个方面进行探讨。 一、IP地址和地理位置的基本概念 首先,让我们了解一下IP地址和地理位

    2024年02月12日
    浏览(49)
  • uniapp获取地理位置的API是什么?

    UniApp获取地理位置的API是 uni.getLocation 。它的作用是获取用户的当前地理位置信息,包括经纬度、速度、高度等。通过该API,开发者能够实现基于地理位置的功能,如显示用户所在位置附近的商家、导航服务、天气查询等。 以下是一个示例,展示如何使用uni.getLocation来获取用

    2024年02月07日
    浏览(41)
  • uniapp开发小程序如何获取用户地理位置

    1、需求说明 需求:点击按钮获取当前微信位置,以及点击拒绝授权后,下次点击还可以拉起授权窗口; 2、言归正传 1、编写代码 模板部分 script部分 2、在 manifest.json 新增如下配置 原因:因为微信小程序从2019年1月14日起新提交发布的版本若未填写地理位置用途说明,则将无

    2024年04月14日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包