代码之家  ›  专栏  ›  技术社区  ›  Omar Shahine

如何判断URL是否为内部网URL?

  •  6
  • Omar Shahine  · 技术社区  · 16 年前

    使用C#如何确定URL是否为内部网URL?我想一些代码来做一些事情,如果一个网址是一个内联网一对公众。

    9 回复  |  直到 16 年前
        1
  •  12
  •   Atmocreations    16 年前

    你不能含蓄地知道。如果您的intranet URL看起来像完全限定的域名,那么很难判断。唯一的方法是查询两个不同的DNS服务器(您自己的和一个公共的)。如果两者返回相同的结果,则它是一个internet域。如果公共DNS服务器无法解析地址,那么它很可能是intranet域。

        2
  •  10
  •   Jon Skeet    16 年前

        3
  •  8
  •   Charles Bretana    16 年前

    如果url解析为tcpIp地址,而tcpIp地址是作为专用IP地址保留的IP地址之一,那么它肯定位于您的Intranet上。这些是

    1. 10.xxx.xxx.xxx,
    2. 172.16.xxx.xxx至172.31.xxx.xxx,以及
    3. 192.168.xxx.xxx

    如果它解析为任何其他IP地址,则 可以

        4
  •  1
  •   Omar Shahine    16 年前

    简单但不完美但对80%的情况有效的方法是简单地检查URL中是否有句点。我知道Intranet URL可以完全限定,但根据我的经验(在Microsoft),大多数都不限定,而且效果很好。

        5
  •  0
  •   Jeremy Bourque    16 年前

    一般来说,没有可靠的方法来区分内部网URL和Internet URL。如果您的程序可以使用intranet,那么它看起来就像Internet,如果没有,那么您仍然不知道该URL应该是一个工作的intranet URL还是一个(暂时)中断的Internet URL。

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

        6
  •  0
  •   SLaks    16 年前

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

    .com ).不过,我见过一些这样的。

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

        7
  •  0
  •   Eric M    16 年前

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

    使用字符串操作破解URL——尽管我认为C#必须有一个URL类来为您完成这项工作——并提取主机名,将其与服务器列表进行比较。

        8
  •  0
  •   Richard Spence    10 年前

    您可以询问internet explorer,查看该域是否与接受的intranet域列表匹配。

    注册表项为HKEY\U CURRENT\U USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Domains

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

        9
  •  -1
  •   Helen Neely    16 年前

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