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

时间:2012-04-16 15:13:55

标签: c# .net ip

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

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

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

嗯,我这样做的方式是:

  1. 将HTTP GET发送到URL并保存结果。
  2. 将URL解析为IP。
  3. 将HTTP GET发送到IP并保存结果。
  4. 比较两个结果。 (您可以在两个结果之间进行样本检查)
  5. 如果结果相同,那么这是专用托管,如果结果不同,那么这是一个共享托管。
  6. 我现在可以想到的这种方法的局限性:

    1. 会花时间为我们找一个合适的比较方法 两个结果。
    2. 如果共享主机配置为默认路由到您正在检查的站点。
    3. 解析URL的功能以及针对不同编程语言的Web请求分散在Internet上。

答案 2 :(得分:0)

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

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

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

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


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