怎么查网站服务器的 IP 归属地?站长自查指南(附 PHP 批量工具)​

怎么查网站服务器的 IP 归属地?站长自查指南(附 PHP 批量工具)​

怎么查网站服务器的 IP 归属地?站长自查指南(附 PHP 批量工具) ​想查一个网站的服务器在哪,核心就两步:把域名解析成 IP,再查这个 IP 的归属地。真动手会发现一个域名可能解析出好几个 IP,有的显示"阿里云"有的显示"美国"——哪个才是真身?这篇讲清楚原理,再给一个 PHP 工具,域名丢进去,IP、省市、运营商一次列全。

一、先搞懂:域名、IP、归属地三者的关系 ​浏览器访问网站,第一步是 DNS 解析——把 www.example.com 换成服务器的 IP。所以"查网站服务器 IP"本质上就是一次 DNS 查询,拿到 IP 再查归属地。这里有个关键认知:

一个域名可能对应多个 IP。 套了 CDN 的网站,DNS 返回的是边缘节点 IP,不同地区解析结果可能不一样;没套 CDN 但做了多线接入的服务器也会返回多个 IP。所以多 IP 本身就是信息——大概率套了 CDN 或做了多线接入。

归属地返回的"省市 + 运营商"直接告诉你服务器在哪个机房:显示"浙江杭州 阿里云",就是托管在阿里云杭州机房;显示"美国 加利福尼亚",服务器就在海外。国内服务器还要备案,查出来在海外的大多就是没备案的站。

二、PHP 实现:域名列表换 IP 归属地表 ​选 PHP 是因为站长手里最容易有的环境就是它——虚拟主机、宝塔面板都自带,命令行能跑,丢到网站目录也能当网页工具用。核心就两个内置能力:dns_get_record() 做解析,file_get_contents() 调归属地接口。

php

// geo.php —— 批量查网站服务器 IP 归属地;用法: php geo.php <域名1> [域名2 ...]

function query_ipgeo(string $ip): ?array {

$url = 'https://ip9.com.cn/get?ip=' . rawurlencode($ip);

$ctx = stream_context_create(['http' => ['timeout' => 5]]);

$body = @file_get_contents($url, false, $ctx);

if ($body === false) return null; // 网络异常

$json = json_decode($body, true);

if (($json['ret'] ?? 0) !== 200) return null; // 非法 IP 或限速

return $json['data'] ?? [];

}

function lookup_domain(string $domain): void {

$records = @dns_get_record($domain, DNS_A); // IPv4 A 记录;IPv6 用 DNS_AAAA

if (!$records) {

echo "[$domain] 解析失败(域名不存在或没有 A 记录)\n";

return;

}

echo "== $domain\n";

foreach ($records as $r) {

$ip = $r['ip'];

$geo = query_ipgeo($ip);

if (!$geo) {

echo " $ip 查询失败(限速或网络问题)\n";

continue;

}

$loc = ($geo['country'] ?? '') . ($geo['prov'] ?? '') . ($geo['city'] ?? '');

printf(" %-16s %-10s %-14s %s\n",

$ip, $loc, $geo['isp'] ?? '', $geo['ip_type'] ?? '');

// ip_type 为 VIP 版字段:ISP=家庭宽带 BUS=企业宽带 IDC=机房

}

}

if ($argc < 2) {

echo "用法: php geo.php <域名1> [域名2 ...]\n";

exit(1);

}

for ($i = 1; $i < $argc; $i++) {

lookup_domain($argv[$i]);

usleep(300000); // 限速防超免费额度(60次/分钟/IP)

}把上面代码存成 geo.php,终端执行 php geo.php www.ip9.com.cn,会输出每个 IP 对应的省市、运营商和 IP 类型,一行一个。查 IPv6 就把 DNS_A 换成 DNS_AAAA,接口支持 IPv6 直接传。

三、结果怎么读:CDN、多线、机房一眼看穿 ​拿到表格后,按下面几条判断:

多个 IP、归属地跨省、运营商是云厂商:几乎可断定套了 CDN——多个 IP 跨省且 isp 是云服务商,就是边缘节点,不是源站。单个 IP 且 isp 是电信/联通/移动:源站直连,就在归属地那个城市。country 不是中国:服务器在海外。顺手在 beian.miit.gov.cn 查下备案,没备案 + 海外 IP 是常见组合。ip_type 显示 IDC:确认是机房 IP。ip_type、ip_asn 是 VIP 版字段;免费版的省市、运营商判断"国内/海外"已经够用。看 CDN 时别钻牛角尖:查到边缘节点后不必执着"挖源站",你看到的就是访客实际访问的节点,判断"站在哪、快不快"已经足够,挖源站属于攻击前置动作。

四、落地注意事项 ​DNS 有缓存和多线路:本地 DNS 不同解析结果可能不一样,换 114.114.114.114 这类公共 DNS 再对比。批量要限速:免费接口 60 次/分钟/IP,代码里已加 0.3 秒间隔,几十个域名没问题,量大就分批。失败要容错:查询失败只打印提示不中断,别让一个域名挂掉后面全停。用途要正当:查自己/友链/联盟站点、识别钓鱼站服务器位置都没问题,拿去搞攻击就是另一回事。总结 ​查网站服务器 IP 归属地是站长最常用的排查动作:确认机房、判断 CDN、识别海外服务器,一个 PHP 脚本全搞定。解析用 dns_get_record,归属地用 https://ip9.com.cn/get?ip=xxx——免费版返回国家、省市、运营商,够日常用;要机房类型(IDC/ISP/BUS)再看 VIP 版的 ip_type 字段,说明见官网 https://www.ip9.com.cn。工具在手,再有人问"这网站服务器在哪",三秒给答案。

上一篇网站提示“IP访问频繁”被限制怎么办?下一篇Linux 怎么查 IP 归属地?一条命令加一个函数,日志排查看 IP 全靠它

相关推荐

车载mp3怎么样
365游戏注册

车载mp3怎么样

📅 07-21 👁️ 9443
‎成都住房公积金
365游戏注册

‎成都住房公积金

📅 08-17 👁️ 4031
腾讯“亲儿子”:微视为什么就是火不起来?
365游戏注册

腾讯“亲儿子”:微视为什么就是火不起来?

📅 07-23 👁️ 4198
朝五晚九 (2021)    Full online with English subtitle for free – iQIYI
365bet体育在线赌场

朝五晚九 (2021) Full online with English subtitle for free – iQIYI

📅 07-05 👁️ 3713
电脑中的excel怎么找不到了
365bet体育在线赌场

电脑中的excel怎么找不到了

📅 02-15 👁️ 319
DNF九周年袖珍罐给哪些职业 给这些职业最划算
365游戏注册

DNF九周年袖珍罐给哪些职业 给这些职业最划算

📅 09-15 👁️ 2081
《王者荣耀》暃价格是多少 暃多少金币能购买
精准原创123656官方网

《王者荣耀》暃价格是多少 暃多少金币能购买

📅 07-06 👁️ 9448
从NBA传奇艾弗森经典比赛录像,看篮球世界杯的激情与传承
如何使用“扫一扫”支付
365bet体育在线赌场

如何使用“扫一扫”支付

📅 07-22 👁️ 4113