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