ホームページ  >  記事  >  バックエンド開発  >  PHPでジャンプ後のアドレスを取得する方法

PHPでジャンプ後のアドレスを取得する方法

PHPz
PHPzオリジナル
2023-03-29 10:10:131238ブラウズ

PHP 開発者にとって、ジャンプ アドレスの取得は、クローラー プログラムで実際のジャンプ アドレスを取得する必要があるなど、非常に一般的な問題になる可能性があります。この記事では、PHP を使用してリダイレクトされたアドレスを取得する方法を説明します。

HTTP リダイレクト

HTTP プロトコルにおいて、リダイレクトとは、クライアント (Web サイト ブラウザなど) がサーバー (Web サイト サーバーなど) に要求したときに、サーバーがリダイレクト応答を返すことを意味します。クライアントはリクエストを別のアドレスに再送信する必要があると伝えます。このプロセスは HTTP リダイレクトと呼ばれます。

HTTP リダイレクトを実装するにはさまざまな方法がありますが、最も一般的なのは、HTTP ステータス コード 302 (見つかった) と 303 (その他を参照) を使用することです。サーバーがこれらのステータス コードを返すと、クライアントは自動的にリダイレクトを実行し、新しい URL アドレスにジャンプします。

リダイレクトされたアドレスを取得する

PHP では、curl 関数と header 関数を使用してリダイレクトされたアドレスを取得できます。以下は、curl を使用してリダイレクトされたアドレスを取得するサンプル コードです。

function getRedirectUrl($url){
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_AUTOREFERER, true);
    $redirectUrl = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);
    curl_close($ch);
    return $redirectUrl;
}

この関数は、URL をパラメータとして受け取り、この URL のリダイレクト後の新しいアドレスを返します。この関数では、次の点に注意する必要があります。

  1. curl_setopt 関数は、URL、戻りデータ型、ジャンプに従うかどうかなど、curl リクエストのいくつかのパラメータを設定するために使用されます。など;
  2. CURLOPT_RETURTRANSFER は、取得したデータを直接出力するのではなく文字列として返すようにcurlに指示します;
  3. CURLOPT_FOLLOWLOCATIONは、HTTP 3xx応答に遭遇したときにリダイレクトアドレスに自動的にジャンプするようにcurlに指示します。
  4. CURLOPT_AUTOREFERER は、curl が自動的にジャンプするときに、HTTP リクエスト ヘッダーの Referer フィールドをジャンプ前のアドレスに設定するように指示します。

curl の使用に加えて、以下に示すように header 関数を使用してリダイレクトされたアドレスを取得することもできます。

function getRedirectUrl($url){
    $redirectUrl = null;
    $headers = get_headers($url, true);
    if (isset($headers['Location'])) {
        $redirectUrl = $headers['Location'];
    } else if(isset($headers['location'])) {
        $redirectUrl = $headers['location'];
    }
    return $redirectUrl;
}

この関数は get_headers 関数を呼び出して $url を取得します。仕様 URL の応答ヘッダー情報。応答ヘッダーに Location または location フィールドが含まれている場合、リクエストはリダイレクトされたと見なされ、リダイレクト アドレスが返されます。ヘッダー関数を使用すると、HTTP 応答ステータス コード 302 または 303 のリダイレクトのみがサポートされ、その他のステータス コードはサポートされないことに注意してください。

概要

この記事では、PHP を使用して HTTP リダイレクト後のアドレスを取得する方法を紹介しました。プログラム内でリダイレクトされたアドレスを追跡する必要がある場合は、curl または header 関数を使用して HTTP 応答ヘッダーの Location フィールドを取得し、リダイレクトされた URL アドレスを取得できます。

以上がPHPでジャンプ後のアドレスを取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:PHPサービスとは次の記事:PHPサービスとは