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

时间:2012-01-04 11:54:37

标签: c# .net

您好我在C#中构建类似于webspider的东西。在我的研究中,我遇到了一个问题,我需要阻止链接是内部还是外部,入站或出站。所以我需要创建一个功能来为我做这项工作。所以我提出了以下功能,但我不确定它是否是最好的algorythm以完成该任务。所以我希望你对这个问题有所了解。

我认为链接前面没有http://或https://的链接是内部的 如果我有一个域http://www.blahblah.com那么像test这样的链接应该仍然是内部的,尽管事实上它在前面有http://,但像http://www.somethingelse.com/?var1=http://www.blahblah.com/test这样的链接是外部的,我正在检查第一个只有字母。

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;
        }

2 个答案:

答案 0 :(得分:6)

Uri.Compare(new Uri("google.de"), new Uri("Google.de"), UriComponents.Host, UriFormat.SafeUnescaped, StringComparison.CurrentCulture);

这就是我从头顶说的话:):

答案 1 :(得分:1)

这取决于。如果您使用的是http URI,那么即使域名相同,也会将指向https URI的链接计为内部链接吗? (反之亦然。)你必须做出决定。

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