-1

在 VB.net

我有 1k 个域。每天我都想检查这些域是否正确重定向。有时其中一个做得不好或坏了,没有重定向。

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

我想得到最终的 URL

域使用服务器重定向。不是 javascript 重定向。因此,在 PhP 中,服务器执行 location: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

4

1 回答 1

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变量中。

于 2013-10-21T03:25:13.533 回答