C# - 如何检测网站是否具有共享或专用 IP 地址

本文关键字:共享 专用 地址 IP 是否 网站 何检测 检测 | 更新日期: 2023-09-27 18:31:28

是否可以使用 C#(Windows 窗体应用程序)从其 url 检测网站是否具有专用或共享 IP 地址?我想在我的应用程序中实现一项功能,让在文本框中写入网址,而不是单击"测试"按钮。,如果站点具有专用 IP 地址,则显示(成功)消息框,否则显示(失败)消息框。

如何使用 C#.NET 检测网站是否具有共享或专用 IP 地址?

C# - 如何检测网站是否具有共享或专用 IP 地址

你可以尝试,但你永远不会有好的结果。我认为你能做的最好的事情就是检查IP的PTR记录,然后检查是否有来自不同网站的关联A记录。然而,这仍然很糟糕,因为一个网站可能有两个看似不同的域,它们属于同一个组织(例如 googlemail.com/gmail.com)。

此外,这假设存在多个 PTR 记录。我认为我没有看到大多数VPS/共享主机支持的设置。

好吧,我会这样做的方法是:

  1. 将 HTTP GET 发送到 URL 并保存结果。
  2. 将 URL 解析为 IP。
  3. 将 HTTP GET 发送到 IP 并保存结果。
  4. 比较两个结果。(您可以在两个结果之间进行抽样检查)
  5. 如果结果相同,则这是专用主机,
  6. 如果结果不同,则这是共享主机。

我现在能想到的这种方法的限制:

  1. 您将花时间找出我们适当的比较方法两个结果。
  2. 如果共享主机配置为默认路由到您正在检查的站点。

解析 URL 和对不同编程语言执行 Web 请求的函数分散在互联网上。

从技术角度来看,没有"共享"或"专用"IP地址这样的东西;该协议没有区别。 这些是用于描述如何使用 IP 的术语。

因此,没有编程方法来回答"这是共享的还是专用的? 这个问题的其他一些答案提出了一些猜测特定域是否在共享IP上的方法,但这些方法充其量只是猜测。

如果你真的想走这条路,你可以爬网并为每个域存储解析的IP。 (很简单,对吧? 然后,您可以在庞大的数据库中查询给定IP上托管的所有域。 (有些工具似乎已经这样做了,尽管只有第一个能够识别我在服务器上托管的多个域。

当然,对于VPS(或像Amazon EC2这样的东西)来说,服务器硬件本身是共享的,但每个客户(域)都会获得一个或多个专用IP。 从外部来看,没有办法知道这些服务器是如何设置的。


TL;DR:这不能以可靠的方式完成。