智能定位天气接口免费
免费自动 IP 定位实时天气 + 5 天预报,无需 Key · 最后更新:2026-09-03
🧪 在线调试
GET
https://ip258.cn/api/weather.php
等待发送请求…
📖 快速调用
自动获取访问者IP定位城市,返回完整气象信息(实时温湿度、空气质量、5天逐天预报)
🔗 接口信息
| 接口地址 | https://ip258.cn/api/weather.php |
| 请求方式 | GET,支持跨域 |
| 数据格式 | JSON(UTF-8) |
| 支持类型 | 自动定位天气 |
| 计费方式 | 免费,无需注册 / Key |
| 数据缓存 | 相同 IP 结果缓存 3 小时 |
📥 请求参数
| 参数 | 必填 | 类型 | 说明 |
|---|
无 | 可选 | - | 无需传参,自动定位访客 IP |
📤 返回示例
{
"code": 200,
"msg": "success",
"used_api": "ip258.cn 智能IP定位天气接口(免费)",
"client_info": {
"province": "河南省",
"city": "驻马店市"
},
"weather_source_data": {
"location": {
"name": "驻马店市",
"province": "河南省",
"city": "驻马店市",
"district": "驿城区",
"address": "河南省-驻马店市",
"lat": 33.017842,
"lng": 114.028471,
"adcode": "411702"
},
"current": {
"update_time": "15:50",
"weather": "阴",
"weather_code": "d02",
"temperature": "28",
"wind": "东北风",
"wind_level": "3级",
"humidity": "43%",
"pressure": "999百帕",
"visibility": "7695",
"air_quality": "优",
"aqi": "45",
"pm25": "16"
},
"forecast": [
{
"date": "09.03",
"day_of_week": "周四",
"day_weather": "多云",
"night_weather": "晴",
"high_temp": "29",
"low_temp": "18",
"wind": "东北风",
"wind_level": "<3级",
"sunrise": "05:59",
"sunset": "18:47",
"aqi": "41",
"aqi_level": 0,
"aqi_desc": "优"
}
]
}
}🗂 data 字段说明
| 字段 | 类型 | 说明 |
|---|
code | string | 200 成功,403/404/429/500 错误 |
msg | string | 接口状态描述 |
used_api | string | 接口标识 |
client_info | object | 访客定位信息 |
client_info.province | string | 访客所在省份 |
client_info.city | string | 访客所在城市 |
weather_source_data | object | 原始气象数据 |
weather_source_data.location | object | 定位城市经纬度、行政编码、地址 |
weather_source_data.current | object | 实时天气、温度、风力、空气质量、AQI |
weather_source_data.forecast | array | 未来 5 天天气预报,含日出日落、空气质量 |
💻 代码示例
curl -A "Mozilla/5.0" "https://ip258.cn/api/weather.php"
<?php
$url = "https://ip258.cn/api/weather_api.php";
$ch = curl_init($url);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 10,
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_USERAGENT => 'Mozilla/5.0' // 注意:接口拦截爬虫UA,必须带浏览器UA
]);
$response = curl_exec($ch);
curl_close($ch);
$result = json_decode($response, true);
print_r($result);
?>
fetch("https://ip258.cn/api/weather_api.php")
.then(res => res.json())
.then(data => console.log(data));
import requests
url = "https://ip258.cn/api/weather_api.php"
headers = {"User-Agent": "Mozilla/5.0"}
res = requests.get(url, headers=headers, timeout=10)
print(res.json())
🚦 状态码
| code | 含义 | 处理 |
|---|
200 | 查询成功 | |
403 | 爬虫 UA 拦截 / IP 已被拉黑 | |
404 | 无法定位当前 IP 位置 | |
429 | 频率超限(1 分钟 60 次 / 1 秒 4 次)或达到每日上限 | |
500 | 天气服务异常 | |
⏱ 频率限制
🆓 免费接口限流
| 规则 | 说明 |
|---|
| 基础频率 | 每个 IP 每分钟最多 60 次,超限返回 429 |
| 瞬时脉冲 | 每秒最多 4 次,防止短时间集中刷 |
| 自动封禁 | 5 分钟内触发限流 3 次 → 自动封禁 15 分钟 |
| 升级封禁 | 1 小时内触发 6 次 → 自动封禁 60 分钟 |
| 永久封禁 | 24 小时内触发 12 次 → 永久拉黑该 IP |