如何判断URL是否是内网网址?

时间:2009-09-11 18:23:30

标签: c# .net

使用C#如何确定URL是否是Intranet URL?如果URL是内部网和公共网,我想要一些代码来做某事。

9 个答案:

答案 0 :(得分:9)

你不能隐晦地知道。如果您的Intranet网址看起来像完全合格的域名,那么很难说。要告诉的唯一方法是查询两个不同的DNS服务器(您自己的和公共的)。如果两者都返回相同的结果,那么它就是一个互联网域名。如果公共DNS服务器无法解析该地址,那么它很可能是一个Intranet域。

答案 1 :(得分:8)

您知道内部子网(就IP地址而言)吗?如果是这样,我只需要解析主机名,看看它是否是内部的。

答案 2 :(得分:7)

如果url解析为tcpIp地址,该地址是作为私有IPAddress留出的IP地址之一,那么它肯定在您的Intranet上。这些是

  1. 10.xxx.xxx.xxx,
  2. 172.16.xxx.xxx至172.31.xxx.xxx,
  3. 192.168.xxx.xxx
  4. 如果它解析为任何其他IP地址, 可能 仍然在您的Intranet上,但它有一个公共IP地址,因此可以从Intranet外部访问< / p>

答案 3 :(得分:0)

通常,没有可靠的方法来从Internet URL告知Intranet URL。如果您的程序可以使用Intranet,那么它看起来就像Internet一样,如果没有,那么您仍然不知道该URL是否应该是一个可用的Intranet URL,或者只是一个(暂时)损坏的Internet URL

您需要一些特殊知识,例如提供Intranet的服务器的域名或IP,以便区分它们。

答案 4 :(得分:0)

如果您想确定任何给定的URL是否是任何公司的内部网URL(而不是为某个特定公司专门设置代码),我祝你好运。

通常,但并非总是如此,itranet网址没有顶级域名(顶级域名,例如.com)。但是,我见过一些。

几乎总是(AFAIK),Intranet域将解析为与计算机当前地址类似的IP地址。请注意,我没有说同一个子网;大型内部网可以有多个子网。另请注意,如果计算机不在公司Intranet中,则成为可解析为类似IP地址的regualr域名。 (除非计算机在NAT后面)

答案 5 :(得分:0)

我不是C#程序员,所以我不能为您提供代码,但基本方法是将URL的主机名部分与Intranet中的服务器的主机名部分进行比较。或者,如果您的URL只使用IP而不是DNS名称,请将IP与Intranet服务器的IP进行比较。

使用字符串操作破解URL - 尽管我认为C#必须有一个可以为您执行此操作的URL类 - 并提取主机名,将其与服务器列表进行比较。

答案 6 :(得分:0)

简单但不完美但适用于80%的情况是简单地检查URL中是否有句号。我知道Intranet URL可以完全合格,但根据我的经验(在Microsoft),大多数都没有,而且效果非常好。

答案 7 :(得分:0)

您可以询问Internet Explorer以查看该域是否与已接受的Intranet域列表匹配。

注册表项为HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Internet Settings \ ZoneMap \ Domains

如果域的协议值为1,则将其视为Intranet域。您需要执行nslookup来收集“真实”地址。

答案 8 :(得分:-1)

要添加其他人所说的内容,Intranet在其地址中没有任何已知的顶级域名。我曾在几家公司工作过,所有Intranet都是这样的:

http://developments/admin - 您会注意到根本没有顶级域名。因此,它解析为网络中的计算机。同样,顾名思义,您不可能在企业环境之外访问它。