本地 IP 数据库(未加载 更新)提供毫秒级 IPv4 区县级定位,在线接口补充 IPv6、运营商、国家/省/市信息。双数据源交叉验证,兼顾响应速度与覆盖范围。
您的当前 IP 地址
代理服务器、CDN、负载均衡器会把客户端真实 IP 通过 X-Forwarded-For、X-Real-IP、Forwarded 等 HTTP 头转发给后端;REMOTE_ADDR 是 TCP 直连端的 IP,在经过反向代理时通常显示代理自身地址。
同时识别 IPv4 与 IPv6 地址,自动识别 IPv4-mapped IPv6(::ffff:a.b.c.d)并提取内嵌地址。
返回国家、省/州、城市三级地理标签,以及运营商信息,覆盖全球 200+ 国家与地区。
本地数据库 + 在线接口双路查询,结果并排展示,便于交叉对比,单一数据源失败不影响整体可用性。
支持一次性粘贴多个 IP(每行一个),表格化展示归属地与运营商信息。
展示服务器实际接收到的 REMOTE_ADDR 与各代理转发头,方便排查链路问题。
对公网 IP 执行反向 DNS 解析(PTR 记录),并展示归属网段的起止地址范围。
IP 归属地查询是通过查询 IP 地址分配数据库,把一个 IP 地址映射到其注册的地理位置(国家、省、市)和网络属性(运营商)的过程。本工具采用「本地数据库 + 在线接口」双数据源协同工作,兼顾响应速度与数据覆盖范围。
两类数据源通过 lookup() 方法串联:先查本地数据库(仅 IPv4),再查在线接口(IPv4 / IPv6 通用);任一数据源失败均不影响其他源返回,最终结果以并排对比形式展示,用户可直观判断数据一致性。
IPv4 是 32 位地址,约 43 亿个,理论上无法满足全球设备需求;IPv6 是 128 位地址,容量约 3.4×10^38 个,是 IPv4 的 7.9×10^28 倍。两类地址的归属地数据库完全独立,本工具的本地数据库仅覆盖 IPv4,IPv6 归属地通过在线接口获取。
常见需要特殊处理的场景:
::ffff:192.168.1.1,最后 32 位实际为 IPv4 地址,常见于双栈服务器上 IPv6 socket 接收 IPv4 数据包。本工具会自动识别并提取内嵌 IPv4 用于本地数据库查询。filter_var() 配合 FILTER_FLAG_NO_PRIV_RANGE 与 FILTER_FLAG_NO_RES_RANGE 标志位判定。IPv4 私有段为 10.0.0.0/8、172.16.0.0/12、192.168.0.0/16;IPv6 私有段为 fc00::/7(Unique Local Address)。127.0.0.0/8 与 IPv6 ::1,仅用于本机自通信。IP 归属地本质上不是「设备 GPS 位置」,而是 IP 注册地的近似位置,因此存在固有偏差:
因此,本工具的查询结果仅供参考,不能作为法律依据或精确物理定位。
本工具同时提供 GET / POST 接口,参数 id 为待查询 IP,返回完整 HTML 页面。如需纯 JSON 接口获取当前访问者 IP,请调用 /https://ip.yuesha.com/api.php。
curl -X POST "https://ip.yuesha.com/" -d "id=8.8.8.8"
import requests
resp = requests.post("https://ip.yuesha.com/", data={"id": "8.8.8.8"}, timeout=10)
print(resp.text)
const axios = require('axios');
axios.post('https://ip.yuesha.com/', 'id=8.8.8.8', {
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
timeout: 10000
}).then(r => console.log(r.data));
import java.net.URI;
import java.net.http.*;
public class Main {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newHttpClient();
HttpRequest req = HttpRequest.newBuilder()
.uri(URI.create("https://ip.yuesha.com/"))
.header("Content-Type", "application/x-www-form-urlencoded")
.POST(HttpRequest.BodyPublishers.ofString("id=8.8.8.8"))
.build();
HttpResponse<String> resp = client.send(req, HttpResponse.BodyHandlers.ofString());
System.out.println(resp.body());
}
}
package main
import (
"fmt"
"net/http"
"net/url"
"strings"
"time"
)
func main() {
form := url.Values{}
form.Set("id", "8.8.8.8")
client := &http.Client{Timeout: 10 * time.Second}
resp, err := client.PostForm("https://ip.yuesha.com/", form)
if err != nil { panic(err) }
defer resp.Body.Close()
buf := new(strings.Builder)
buf.ReadFrom(resp.Body)
fmt.Println(buf.String())
}
<?php
$ctx = stream_context_create([
'http' => [
'method' => 'POST',
'header' => 'Content-type: application/x-www-form-urlencoded',
'content' => http_build_query(['id' => '8.8.8.8']),
'timeout' => 10,
]
]);
echo file_get_contents('https://ip.yuesha.com/', false, $ctx);
using System;
using System.Collections.Generic;
using System.Net.Http;
class Program {
static async Task Main() {
using var client = new HttpClient { Timeout = TimeSpan.FromSeconds(10) };
var content = new FormUrlEncodedContent(new Dictionary<string, string> { { "id", "8.8.8.8" } });
var resp = await client.PostAsync("https://ip.yuesha.com/", content);
Console.WriteLine(await resp.Content.ReadAsStringAsync());
}
}
使用建议:
/https://ip.yuesha.com/api.php。我们坚持为全球中文用户提供准确、可靠的在线工具。
所有工具均遵循我们 "关于我们" 页面中所述的审核原则进行开发与维护。请注意: IP 归属地查询结果受数据库更新频率、代理/VPN、移动网络等多种因素影响,仅供参考,不构成任何专业建议。