C# 检查链接是内部链接还是外部链接

C# 检查链接是内部链接还是外部链接,c#,.net,C#,.net,你好,我正在用C#构建一个类似webspider的东西。在我的研究中,我遇到了一个问题,那就是我需要确定一个链接是内部链接还是外部链接、入站链接还是出站链接。所以我需要创建一个函数来为我完成这项工作。因此,我提出了以下函数,但我不确定它是否是完成该任务的最佳算法。所以我想听听你对这个问题的看法 我认为链接前面没有http://或https://的链接是内部链接 如果我有一个域,那么像链接一样的测试应该仍然是内部的,尽管它前面有http://但是像链接一样的测试是外部的,我只检查第一个字母 pri

你好,我正在用C#构建一个类似webspider的东西。在我的研究中,我遇到了一个问题,那就是我需要确定一个链接是内部链接还是外部链接、入站链接还是出站链接。所以我需要创建一个函数来为我完成这项工作。因此,我提出了以下函数,但我不确定它是否是完成该任务的最佳算法。所以我想听听你对这个问题的看法

我认为链接前面没有http://或https://的链接是内部链接 如果我有一个域,那么像链接一样的测试应该仍然是内部的,尽管它前面有http://但是像链接一样的测试是外部的,我只检查第一个字母

private Boolean checklinkifinternal(String link)
        {
            Boolean isinternal = false;

            if (link.IndexOf("http://") == 0 || link.IndexOf("https://") == 0)
            {
                //Then probably external
                if (link.IndexOf("http://" + UrlName) == 0 || link.IndexOf("https://" + UrlName) == 0 || link.IndexOf("http://www." + UrlName) == 0 || link.IndexOf("https://www." + UrlName) == 0)
                {
                    isinternal = true;
                }
            }
            else
            {
                isinternal = true;
            }

            return isinternal;
        }

这是我想从头顶说的:)

视情况而定。如果您使用的是http URI,那么即使域名相同,指向https URI的链接也算是内部链接吗?(反之亦然)你必须做出决定


另外,您的算法没有考虑本地文件系统(使用file://)。

您如何通过它使用的协议确定它是外部的/内部的…?或者这两个都是内部的,但会作为外部的传递。Ed没有想到这一点,我认为您需要一种新的方法。至于内部/外部定义。我想你把它称为“我现在还是和以前一样在同一个网站上吗”而不是“这个主机是否有两个IP连接到同一个网站”Volker Manuel是的,我想这是一个可能的事实。如果有1个域与两个IP匹配,则两个IP应为同一站点。负载平衡就是这样一个例子?没错。然后,您必须比较两个IP,看看每个主机上是否存在相同的文件。做了很多工作,我真的会比较主机名(不管协议如何)嗯,我认为Uri必须是Uri类型,如果我抓取“/somelink.html”这样的链接,它将无法识别它是Uri来与我正在浏览的域进行比较。是的,你是对的,即使在file://test.zip 这不是我应该知道的,但我确实需要以某种方式处理它
Uri.Compare(new Uri("google.de"), new Uri("Google.de"), UriComponents.Host, UriFormat.SafeUnescaped, StringComparison.CurrentCulture);