如何在重定向后查看域的最终URL?

时间:2013-10-21 02:36:30

标签: vb.net

在VB.net中

我有1k个域名。我每天都要检查这些域是否正确重定向。有时其中一个不好或破坏而不是重定向。

我使用了webclient,但它只提供了网页的内容,而不是最终的网址。

我想获得最终的网址

域名使用服务器重定向。不是javascript重定向。所以在PhP中服务器的位置是:newurl.com

例如,

page = wc.DownloadString(URL) 

将提供域的内容而不是最终的URL

如果工作正常,domaina.com会重定向到ww1.domaina.com或google.com

我想要一个功能

checkDomainRedirect(url as string)其中

checkDomainRedirect(url as string)产生ww1.domaina.com

1 个答案:

答案 0 :(得分:1)

请不要将 WebClient 用于此目的,因为您无法在不重写方法的情况下关闭 AllowAutoRedirect

您的方案更简单的是使用 HttpRequest ,您可以(并且必须)关闭 AllowAutoRedirect

HttpWebRequest req = (HttpWebRequest) WebRequest.Create(myUrl);
req.AllowAutoRedirect = false;
HttpResponse resp = (HttpWebResponse) myHttpWebRequest.GetResponse();

要确定 HttpRequest 提供的 HttpResponse 是否包含重定向,请检查 StatusCode 是否为300,301,302或303 (如果需要,甚至307)。如果找到了这样的 StatusCode ,请查看Location:标头以查找重定向URL。

string redirUrl = null;

switch (resp.StatusCode)
{
    case HttpStatusCode.MultipleChoices:
    case HttpStatusCode.Redirect:
    case HttpStatusCode.RedirectMethod:
    case HttpStatusCode.MovedPermanently:
    //case HttpStatusCode.TemporaryRedirect:

        // Redirect found. Get the redirection URL from the Location: header
        redirUrl = resp.Headers[HttpResponseHeader.Location];
        break;
}

如果找到了重定向Url,它将存储在 redirUrl 变量中。