0

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

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

4

3 回答 3

2

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

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

于 2012-04-16T15:17:03.080 回答
0

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

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

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

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


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

于 2012-04-16T19:19:07.600 回答
0

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

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

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

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

解析 URL 和针对不同编程语言执行 Web 请求的功能分散在 Internet 上。

于 2012-04-16T18:27:51.567 回答