想挖个网站的根疙瘩,也就是要搞清它到底在哪个 IP 地址上“躺”着,这事儿实际上比看它长得有多漂亮要好办上手得多,就连显菜。大量时候,看着网页里那一串庞大的域名,你心里就盘算着:“这哥们儿到底在哪个城市、哪个机房里干活”。别急着找那个庞大的"www"要么那个看起来像天书一样的子域名,有时候直接去那个域名开头的前几位字母,就连前几位数字,就能瞅见个大约的地理位置。

比如访问 `google.com`,你肉眼盯着那个域名,一眼就能拉到它所属的国家(美国)和时区,再往前挤挤,就能认出它归于全球知名的 Google 公司。 实际上网上流传的那个说法,说要把域名头四位拆开查 IP,听起来挺唬人,但真到了实战里,光靠肉眼凑合一下早就漏光了。域名是给用户看的脸,IP 才是服务器那台看不见的机器。要真想查,最好办粗暴的方式就是直接进去,用浏览器地址栏往那看。你点一下那个网址,回车,你会发现浏览器右上角的新标签页里会弹出一个 IP,那玩意儿就是网站跑的 HTTP 服务器 IP(比如 `142.250.0.123`),那个数字后面跟着的 `123` 才是子域名,单独拿出来查也没用,得还原成整个的域名格式,比如 `www.google.com` 才能查出来它的真 IP。

不过,目前的网站后台管理要么某些隐藏功能,可能会故意把 IP 藏起来,要么用动态 IP 替换,这时候就得换个策略了。 要是不想折腾浏览器插件,那就直接看那个域名本身。

比如 `microsoft.com`,这个数字头 `microsoft` 本身就是一个挺大的域名,直接查这个域名,就能直接拿到它的官方 IP 地址,不用猜也不用猜,一查一个准。

同理,像 `github.com` 这种,它的 `.com` 后缀代表的是通用,但它的根域名 `github` 实际上也直接指向了服务器的 IP。

这时候你会发现,大量大公司的官网,直接查那个最核心的域名(不带 .com 要么不带 .net),就能直接拿到服务器的 IP,这还省去了中间好几层的转换。 还有一种更底层的办法,就是去查那个域名的注册信息。域名是注册商(ICANN)管的,你能够去注册商官网要么去 `.top` 这种顶级域名的注册信息查询站,直接搜那个域名,就能看到它注册在哪个国家,归于哪家注册商,就连还能看到注册商供给的官方 IP 列表(别看比直接查域名要复杂一点)。

比如查 `twitter.com`,去腾讯云要么阿里云的查询页面输入 `twitter`,就能看到它注册归属地是英国,所属区域是 London,然后就能看到它官方给的 IP 段,一般就是 `173` 开头的那些数字。

这时候你就能看到那个 IP 是在海外,而在国内,中间隔着好几层防火墙和运营商,查起来差不一点都不费事,只是得忍着一下网络延迟罢了。 再给点具体数据看看,比如你想查 `bilibili.com` 的服务器。你直接去这个域名的注册信息页面,你会发现它归归于腾讯公司,注册地在广州,归属 IP 段是 `223` 开头,官方的 IP 地址可能是 `223.5.5.5` 这种。

反过来查百度,你会发现百度归属地是中国(北京),IP 段是 `114`,官方 IP 是 `114.114.114.114`。再比如查 `qq.com`,它归属腾讯,IP 段是 `127`,IP 是 `127.16.0.1`。

这些数据别看都是真,但你要自己一个个去翻,确实有点累。 实际上查 IP 这事儿,核心就两点:一是看域名,二是看注册商。目前有了专门的工具,比如 IP 查询官网要么浏览器插件,点一下网址就能秒出 IP 和地理信息。但要是你是想更深层地分析,比如那个服务器的地理位置是不是确实在某个地方,有没有被劫持,那就得看它的 DNS 记录要么 DNSSEC 记录。浏览器地址栏里那个小小的 IP 地址,有时候会显示为 `127.0.0.1` 要么 `fe80::%1` 这种内网地址,这时候可能跟实际的网络拓扑有点偏差。 实际上大量时候,我们真正需求的不是那个具体的数字 IP,而是知道它在哪个国家,要么哪个云服务供给商上跑的。

比如大量大厂目前都在用云服务商的 CDN,那个 IP 可能早就换成了云厂商自己的 IP,要么是像阿里云那个 IP。

这时候,直接查那个入站域的解析记录要么访问日志,往往比查域名头更靠谱。

比如你去访问 `news.ycombinator.com`,你会发现它的 IP 是 `104.244.42.1`,这是亚马逊 AWS 的 IP,说明它的海量内容分发网络在 AWS 上。

这时候要是你想知道 AWS 自己的 IP 段,直接去 AWS 官网查就能找到,不用非得靠域名解析。 另外,有些网站为了保险,可能会做反爬要么伪装,直接查 IP 查不到,这时候就得用代理要么抓包工具(比如 Fiddler 要么 Wireshark)。在抓包的时候,你去查看 HTTP 响应状态里的 `X-Forwarded-For` 要么 `Remote-Addr` 字段,那里大约率就是真的服务器 IP。

这时候你可能会发现,不同的浏览器,同一个网站查出来的 IP 可能都不一样,有的显示 `185.199.108.153`,有的显示 `34.33.32.12`,这就是同一个服务器在不同地域要么不同代理下的表现。

这时候要是你知道原始 IP 是啥,就能一眼看出是哪个运营商要么哪个机房在回包。 还有一种方式,就是利用域名本身的结构特征。

像 `.cn` 域名的服务器,大约率是在中国;`.com` 的分布就广多了,可能是美国、加拿大、英国这些地方。`.net` 的分布就比较聚拢在欧美了。

这别看是个经验法则,但有时候能被用。

比如查一个看起来像日文的网站,要是你质疑它是个日本的服务,直接去 `japan` 这个区域看,要么查它的注册信息,看看它是不是在九州要么冲绳哪个地方注册的,这就能初步锁定地理位置了。自然,这方式不可靠,大量假域名随意注册个 `.top` 就糊弄那会儿了,故此还是得结合注册商和官方 IP 段去验证。 实际上说到底,查 IP 这事儿,没那么神秘。

只要你会用浏览器地址栏,要么去注册商官网,就连有时候翻翻 DNS 记录,就能搞到大局部信息。

那些所谓的“专业工具”要么“黑科技”,大量时候无非就是封装了这些基础操作,要么做了更复杂的过滤,能省点力气罢了。

要是你只是想知道一个网站跑在哪,直接去域名解析要么注册商页面看看,哪怕只是看它归属中国的哪个省份,要么归属美国的哪个州,根本就能知足绝大多数需求了。至于它的具体内部 IP 是如何路由的,那得看服务器管理员的配置,要么你想知道它具体连的是哪家云厂商的啥线路,那得看具体的网络拓扑了,但这已经超出了一般“查个 IP"的范畴了。