-1

VB.netで

1,000 個のドメインを取得しました。これらのドメインが適切にリダイレクトされていることを毎日確認したいと思っています。場合によっては、そのうちの 1 つがうまく機能していなかったり、壊れていて、リダイレクトされていないことがあります。

私は 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) は ww1.domaina.com を生成します

4

1 に答える 1

1

メソッドをオーバーライドせずにAllowAutoRedirectをオフにすることはできないため、その目的でWebClientを使用しないでください。

あなたのシナリオにとってはるかに簡単なのは、HttpRequestを使用することです

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

HttpRequestによって提供されるHttpResponseにリダイレクトが含まれているかどうかを確認するには、StatusCode300、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 に答える