【PHP】几种免费的通过IP获取IP所在地理位置的接口(部分免费部分收费)

目录

一、获取客户端IP地址

二、获取IP所在地理位置接口

1、IP域名归属地查询

2、腾讯地图 - IP定位

3、聚合数据 - IP地址(推荐)

4、高德地图 - IP定位(推荐)

5、360分享计划 - IP查询

6、天聚ip地址查询 

7、百度IP地址查询 

 8、IP归属地查询


整理收集了几种通过IP地址获取所在地理位置的接口,部分免费,部分有次数限制。

一、获取客户端IP地址

//获取ip地址
function get_ip(){if (isset($_SERVER)) {if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {$realip = $_SERVER['HTTP_X_FORWARDED_FOR'];} elseif (isset($_SERVER['HTTP_CLIENT_IP'])) {$realip = $_SERVER['HTTP_CLIENT_IP'];} else {$realip = $_SERVER['REMOTE_ADDR'];}} else {if (getenv("HTTP_X_FORWARDED_FOR")) {$realip = getenv( "HTTP_X_FORWARDED_FOR");} elseif (getenv("HTTP_CLIENT_IP")) {$realip = getenv("HTTP_CLIENT_IP");} else {$realip = getenv("REMOTE_ADDR");}}return $realip;
}

二、获取IP所在地理位置接口

一些通用的方法,用于处理接口:CURL请求,将JSON转为数组

// CURL请求
public function freeApiCurl($url,$params=false,$ispost=0){$ch = curl_init();curl_setopt( $ch, CURLOPT_HTTP_VERSION , CURL_HTTP_VERSION_1_1 );curl_setopt( $ch, CURLOPT_HTTP_VERSION , CURL_HTTP_VERSION_1_1 );curl_setopt( $ch, CURLOPT_USERAGENT , 'free-api' );curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT , 60 );curl_setopt( $ch, CURLOPT_TIMEOUT , 60);curl_setopt( $ch, CURLOPT_RETURNTRANSFER , true );if( $ispost ){curl_setopt( $ch , CURLOPT_POST , true );curl_setopt( $ch , CURLOPT_POSTFIELDS , $params );curl_setopt( $ch , CURLOPT_URL , $url );}else{if($params){curl_setopt( $ch , CURLOPT_URL , $url.'?'.$params );}else{curl_setopt( $ch , CURLOPT_URL , $url);}}$response = curl_exec( $ch );if ($response === FALSE) {return false;}curl_close( $ch );return $response;
}/*** 将JSON内容转为数据,并返回*/
public function returnArray($content){return json_decode($content,true);
}

1、IP域名归属地查询

接口描述:(免费无限制)

 名称说明
接口名称IP/域名归属地查询
接口地址https://api.asilu.com/ip/
请求方式GET/POST
官方文档API 接口

 请求参数说明

参数必填含义说明
ipIP地址ip地址或域名,缺省时会使用当前请求端的Ip 

返回参数说明

名称含义说明
ipip地址当前ip地址或域名
dz地理位置请求IP的地理位置
wl运营商

 代码示例

$ip = get_ip();
$apiUrl = 'https://api.asilu.com/ip/?ip='.$ip;
$result = $this->returnArray($this->freeApiCurl($apiUrl));

2、腾讯地图 - IP定位

接口描述:收费

IP定位-免费API,收集所有免费的API在此申请key,每天可用10000次

 名称说明
接口名称IP定位
接口地址https://apis.map.qq.com/ws/location/v1/ip
请求方式GET
来源腾讯地图
官方文档

WebService API | 腾讯位置服务

 请求参数说明

参数必填含义说明
key开发密钥
ipIP地址ip地址或域名,缺省时会使用当前请求端的Ip 
output返回格式支持JSON/JSONP,默认JSON
callbackJSONP方式回调函数

返回参数说明

名称类型说明
statusnumber状态码,0为正常,其它为异常,详细请参阅状态码说明
messagestring对status的描述
resultobjectIP定位结果
ipstring用于定位的IP地址
locationobject定位坐标。注:IP定位服务精确到市级,该位置为IP地址所属的行政区划政府坐标。
latnumber纬度
lngnumber经度
ad_infoobject定位行政区划信息
nationstring国家
nation_codenumber国家代码(ISO3166标准3位数字码)
provincestring
citystring
districtstring
adcodenumber行政区代码

代码示例 

$ip = get_ip();
$apiUrl = 'https://apis.map.qq.com/ws/location/v1/ip';
$params = ["key" => "xxxxxx","ip" => $ip];
$params = http_build_query($params);
$result = $this->returnArray($this->freeApiCurl($apiUrl,$params,1));

3、聚合数据 - IP地址(推荐)

接口描述:收费,每天有50次免费额度 - 聚合数据

IP地址-免费API,收集所有免费的API 在此申请key,每天可用500次,推荐

 名称说明
接口名称IP地址查询
接口地址http://apis.juhe.cn/ip/ipNewV3
请求方式GET/POST
来源聚合数据
官方文档IP地址查询接口_IP归属地查询接口_免费API数据接口_聚合数据 - 天聚地合

 请求参数说明

参数必填含义说明
key开发密钥在个人中心->我的数据,接口名称上方查看
ipIP地址需要查询的IPv4地址。暂不支持IPv6地址

返回参数说明

名称含义说明
error_code返回码0表示成功
resultcode状态码200表示成功
reason返回说明
result返回结果集
Country国家/地区
Province省份区域,部分可能为空
City城市,部分可能为空
Isp运营商,部分可能为空

代码示例

$ip = get_ip();
$apiUrl = 'http://apis.juhe.cn/ip/ipNew';
$params = ["key" => "xxxxxxx","ip" => $ip];$params = http_build_query($params);
$rs = $this->returnArray($this->freeApiCurl($apiUrl,$params,1));

4、高德地图 - IP定位(推荐)

接口描述:收费,每月有150000次免费额度。高德地图IP定位接口支持HTTP/HTTPS

名称说明
接口名称高德IP定位
接口地址https://restapi.amap.com/v3/ip?parameters
请求方式GET
来源高德地图
官方文档IP定位-基础 API 文档-开发指南-Web服务 API | 高德地图API

 请求参数说明

参数必填含义说明
key请求服务权限标识用户在高德地图官网 申请 Web 服务 API 类型 KEY
ipIP地址需要搜索的IP地址,若不填写IP,则使用当前IP
sig签名选择数字签名认证的付费用户必填

返回参数说明

名称含义说明
status结果状态值0表示失败,1表示成功
info状态说明当status为0时,info返回错误原因,否则返回OK
infocode状态码10000代表正确
province省份

如果在局域网 IP 网段内,则返回“局域网”;

非法 IP 以及国外 IP 则返回空

city城市如果为局域网网段内 IP 或者非法 IP 或国外 IP,则返回空
adcode城市的 adcode 编码adcode 信息可参考 城市编码表 获取
rectangle所在城市矩形区域范围所在城市范围的左下右上对标对

代码示例

前端调用写法

<script src="/newadmin/js/jquery-1.12.3.min.js" charset="utf-8"></script> 
<script>
$.ajax({url:'https://restapi.amap.com/v3/ip?key=xxxxxx',data:{ip:'223.104.3.43'},    //不填查询当前IPsuccess:function (data) {//市,如郑州市var city = data.city;//邮编:410100var cityCode = data.adcode;//省份:河南省var province = data.province;//省邮编:410000var provinceCode = data.provinceCode;//经度 & 维度,以;间隔var rectangle = data.rectangle;console.log(data)}
});
</script>

后端调用写法

$ip = '223.104.44.14';
$key = 'xxxxxx';
$apiUrl = 'https://restapi.amap.com/v3/ip';
$params = ["key" => $key,"ip" => $ip,
];
$params = http_build_query($params);
$result = $this->returnArray($this->freeApiCurl($apiUrl,$params));

5、360分享计划 - IP查询

接口描述:免费,不稳定,有时候有数据有时候无数据

 名称说明
接口名称IP地址查询
接口地址http://ip.360.cn/IPQuery/ipquery
请求方式GET/POST
来源360分享计划

 请求参数说明

参数必填含义说明
ipIP地址需要查询的IP地址

返回参数说明

名称含义说明
errno返回码0表示成功
code返回码当code=null时,请求失败
errmsg错误信息errno为0时,错误信息为空
data返回地理位置及运营商如:北京市   移动

代码示例

public function index(){$ip = get_ip();$apiUrl = 'http://ip.360.cn/IPQuery/ipquery';$params = ["ip" => $ip];$params = http_build_query($params);$result = $this->returnArray($this->freeApiCurl($apiUrl,$params,1));}

这个接口好像对市级不太精准,这个Ip是河南郑州的,结果返回河南驻马店,请酌情使用 

6、天聚ip地址查询 

接口描述:收费,每天有100次的免费额度

 名称说明
接口名称IP地址查询
接口地址https://apis.tianapi.com/ipquery/index
请求方式GET/POST
来源天聚数行
官方文档ip地址查询API接口 - 天聚数行TianAPI

 请求参数说明

参数必填含义说明
keyAPI密钥官网注册申请
ipIP地址需要查询的IP地址
full是否需要省市全称1表示需要

返回参数说明

名称含义说明
code状态码200表示成功
msg错误信息成功时显示success,错误时显示错误信息
result返回结果集
ipip地址
continent大陆州
country国家
province省级行政区
city城市
district地区
isp网络运营商
areacode地区编码
countrycode国家代码
countryenglish国家英文名称
timezone国际时区
longitude经度
latitude纬度

代码示例

$ip = '223.104.44.14';
$apiUrl = 'https://apis.tianapi.com/ipquery/index';
$params = ["key" => "xxxxxx","ip" => $ip,"full" => "1"];
$params = http_build_query($params);
$result = $this->returnArray($this->freeApiCurl($apiUrl,$params,1));

7、百度IP地址查询 

接口描述:免费

 名称说明
接口名称百度IP地址查询
接口地址http://opendata.baidu.com/api.php
请求方式GET
来源百度开放中心

 请求参数说明

参数必填含义说明
queryIP地址需要查询的IP地址
resource_id资源id填写6006即可
oe数据编码utf8
format返回数据格式json

返回参数说明(下面只列出主要参数,详细返回参数可查看下面截图)

名称含义说明
status状态码0表示成功
data返回数据集
OriginQuery请求的ip地址
location地理位置和运营商如:河南省郑州市   移动
resource_id资源id

代码示例

$ip = '111.7.100.23';
$apiUrl = 'http://opendata.baidu.com/api.php?query='.$ip.'&resource_id=6006&oe=utf8&format=json';
$result = $this->returnArray($this->freeApiCurl($apiUrl));

 8、IP归属地查询

接口描述:免费,稳定性较差,自动区分IPv4/IPv6

 名称说明
接口名称IP归属地查询
接口地址https://api.vore.top/api/IPdata
请求方式GET
来源vore-api,由个人搭建

 请求参数说明

参数必填含义说明
ipIP地址需要查询的IP地址

返回参数说明(下面只列出主要参数,详细返回参数可查看下面截图)

名称类型含义说明
codestring状态码200表示成功
msgstring错误信息成功时显示SUCCESS,错误时显示错误信息
ipinfoobjectip信息包括ip的类型,请求的ip地址
ipdataobjectip数据
info1string省份
info2string城市
info3string
ispstring运营商
adcodeobject行政区划信息集
ostring定位信息及运营商河南省郑州市 - 移动
pstring省份
cstring城市
..................
time当前时间戳

代码示例

$ip = '111.7.100.23';
$apiUrl = 'https://api.vore.top/api/IPdata?ip='.$ip;
$result = $this->returnArray($this->freeApiCurl($apiUrl));

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/91640.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/91640.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Excel】制作双重饼图

一、效果话不多说&#xff0c;直接上数据和效果图&#xff01;&#xff08;示例软件&#xff1a;WPS Office&#xff09;类别现金刷卡小计苹果10.005.0015.00荔枝20.0015.0035.00西瓜30.0025.0055.00总计60.0045.00105.00二、步骤&#xff08;一&#xff09;制作底图插入饼图&a…

gcc-arm-none-eabi安装后,找不到libgcc.a的拉置

位置在&#xff1a;/usr/lib/gcc/arm-none-eabi/6.3.1/libgcc.a查找方法&#xff1a;arm-none-eabi-gcc --print-libgcc-file-name以前没找到&#xff0c;是因为进错目录&#xff1a;/usr/lib/arm-none-eabi/lib

上证50期权2400是什么意思?

本文主要介绍上证50期权2400是什么意思&#xff1f;“上证50期权2400”通常指上证50ETF期权的某个具体合约代码&#xff0c;其中“2400”是合约代码的一部分&#xff0c;需结合完整代码格式理解其含义。上证50期权2400是什么意思&#xff1f;一、上证50期权合约代码的组成上证5…

发那科机器人P点位置号码自动变更功能为禁用状态

通过改变变量的状态&#xff0c;发那科机器人可以实现&#xff0c;当在程序中进行记录、修改、插入、删除、复制/粘贴包含有P点位置号码的行时&#xff0c;P点位置号码会自动从小到大自动排列&#xff0c;可以实现自动排列&#xff0c;或者点击编辑变更编号也可以下图所示女变量…

什么叫湖仓一体

文章目录概念一、理解湖仓一体&#xff1a;先搞懂“数据湖”和“数据仓库”1. 数据仓库&#xff08;Data Warehouse&#xff09;2. 数据湖&#xff08;Data Lake&#xff09;3. 传统架构的痛点&#xff1a;“湖”与“仓”的割裂二、湖仓一体的核心特点&#xff1a;融合“湖”与…

网络安全突发事件应急预案方案

最近有要求需要出一个网络安全突发事件应急预案方案&#xff0c;本文仅就应急预案问题提出一点初步思考&#xff0c;意在抛砖引玉&#xff0c;盼各位读者不吝赐教&#xff0c;共同完善对这一领域的认识。一、总则 &#xff08;一&#xff09;目的 为有效应对规划建筑设计院企业…

【基于3D Gaussian Splatting的三维重建】保姆级教程 | 环境安装 | 制作-训练-测试自己数据集 | torch | colmap | ffmpeg | 全过程图文by.Akaxi

目录 一.【3DGS环境配置】 1.1 克隆3DGS仓库 1.2 安装Visual Studio 2022 1.2.1 下载Visual Studio 2022 1.2.2 更改环境变量 1.3 创建环境 1.3.1 创建python环境 1.3.2 离线安装torch包 1.3.3 安装依赖包 1.3.4安装子模块 &#xff08;1&#xff09;报错解决&…

C#泛型委托讲解

1. 泛型&#xff08;Generics&#xff09; 泛型允许编写类型安全且可重用的代码&#xff0c;避免装箱拆箱操作&#xff0c;提高性能。 泛型类 // 定义泛型类 public class GenericList<T> {private T[] items;private int count;public GenericList(int capacity){items …

【DL学习笔记】DL入门指南

DL入门指南 资料课程 李沐老师 《动手学深度学习》 https://tangshusen.me/Dive-into-DL-PyTorch/李宏毅老师课程 https://speech.ee.ntu.edu.tw/~hylee/ml/2021-spring.php DL入门必掌握知识点 数据处理 &#xff1a; numpy、torch地址处理 &#xff1a; os、pathlib文件处…

在 uni-app 中进行路由跳转前的权限验证(检查用户是否登录)

使用场景&#xff1a; 适用于需要登录才能访问的 uni-app 应用保护需要认证的页面不被未授权用户访问统一处理路由跳转的权限控制 /utils/cookies.js下的部分代码内容&#xff1a; // #ifdef H5 import Cookies from js-cookie // #endif// ums const tokenKey user_center_to…

垃圾收集器ParNewCMS与底层三色标记算法详解

垃圾收集技术详解笔记 1. 分代收集理论 当前虚拟机的垃圾收集采用分代收集算法&#xff0c;根据对象存活周期将内存分为不同代区&#xff0c;以优化回收效率。 核心分区&#xff1a; 新生代&#xff08;Young Generation&#xff09;&#xff1a;对象存活周期短&#xff0c;约9…

全排列(回溯算法)

本文参考代码随想录 给定一个 没有重复 数字的序列&#xff0c;返回其所有可能的全排列。 示例: 输入: [1,2,3] 输出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ] 思路 排列是有序的&#xff0c;在排列问题中不需要startIndex&#xff1b;但排列问题需要一个…

在线任意长度大整数计算器

具体请前往&#xff1a;在线大整数计算器--支持超大整数的加减乘除,幂运算/模运算,最大公约数&#xff0c;最小公倍数

AT6668B芯片说明书

这颗北斗专用单芯片解决方案AT6668B&#xff0c;采用射频前端与基带处理一体化设计&#xff0c;集成北斗二号/三号双模B1IB1C信号处理器。通过优化星历解码算法实现秒级卫星锁定&#xff0c;配合硬件加速的干扰监测模块&#xff0c;在电磁环境复杂的应用场景中仍可维持10Hz高频…

谷歌Chrome浏览器安装插件

因为google浏览器的应用市场(https://chrome.google.com/webstore/category/extensions)在国内无法访问,所以无法在线安装插件,这里提供开发者模式离线安装插件的方法。 1、下载crx脚本 谷歌浏览器的插件离线文件的扩展名为:crx(Firefox火狐浏览器的插件扩展名为fpi)。…

【制造】erp和mes系统建设方案(word)

第一部分 概述 第二部分 方案介绍 第三部分 系统业务流程 3.1 关键需求概括分析 3.1.1 销售管理方面 3.1.2 采购管理方面 3.1.3 仓库管理方面 3.1.4 财务管理方面 3.1.5 人力资源方面 3.2 关键需求具体分析 3.2.1 财务管理 3.2.1.1会计凭证解决 3.2.1.2钞票流…

Spring AI 系列之二十八 - Spring AI Alibaba-基于Nacos的prompt模版

之前做个几个大模型的应用&#xff0c;都是使用Python语言&#xff0c;后来有一个项目使用了Java&#xff0c;并使用了Spring AI框架。随着Spring AI不断地完善&#xff0c;最近它发布了1.0正式版&#xff0c;意味着它已经能很好的作为企业级生产环境的使用。对于Java开发者来说…

IMAP电子邮件归档系统Mail-Archiver

简介 什么是 Mail-Archiver &#xff1f; Mail-Archiver 是一个用于从多个 IMAP 账户归档、搜索和导出电子邮件的 web 应用程序。它提供了一种全面的解决方案&#xff0c;帮助用户管理和存储电子邮件。 主要特点 &#x1f4cc;自动归档&#xff1a;自动归档进出邮件&#xff…

李宏毅深度学习教程 第6-7章 自注意力机制 + Transformer

强烈推荐&#xff01;台大李宏毅自注意力机制和Transformer详解&#xff01;_哔哩哔哩_bilibili 目录 1. 词嵌入&问题情形 2. self-attention 自注意力机制 3. 自注意力的变形 3.1 多头注意力&#xff08;multi-head&#xff09; 3.2 位置编码 3.3 截断自注意力&…

大模型幻觉的本质:深度=逻辑层次,宽度=组合限制,深度为n的神经网络最多只能处理n层逻辑推理,宽度为w的网络无法区分超过w+1个复杂对象的组合

大模型幻觉的本质&#xff1a;深度逻辑层次&#xff0c;宽度组合限制&#xff0c;深度为n的神经网络最多只能处理n层逻辑推理&#xff0c;宽度为w的网络无法区分超过w1个复杂对象的组合&#x1f9e9; "深度逻辑层次"具体含义&#x1f522; "宽度组合限制"具…