如何判断URL是否是Intraneturl?

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

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

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

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

  1. 10.xxx.xxx.xxx,
  2. 172.16.xxx.xxx到172.31.xxx.xxx,和
  3. 192.168.xxx.xxx

如果它解析为任何其他IP地址,它可能仍然在您的Intranet上,但它有一个公共IP地址,因此可以从Intranet外部访问它

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

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

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

通常,但并非总是如此,itraneturl没有顶级域名(顶级域名,例如.com )。 但是,我见过一些这样的事情。

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

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

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

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

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

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

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

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

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