-3

重複の可能性:
HTTP-Basic 認証を使用した HTTP GET 要求の作成

パスワードで保護されたページの HTML ソース コードを取得したい。私は通常、このコードを使用して、保護されていないページの html ソースを取得します。

$handle = @fopen("http://www.webmasterworld.com", "rt");
$source_code = fread($handle,9000);

ユーザー名とパスワードを使用して、パスワードで保護されたページのソースを取得するにはどうすればよいですか? Basic 認証では保護されません。

4

3 に答える 3

4

これは BASIC AUTH ではなく (たとえば、apache の .htaccess によって保護されている)、代わりにセッション/Cookie ベースのように見えるため、通常のブラウザーが POST 要求を介して行うのと同じ方法で、最初にユーザー名/パスワードを送信する必要があります。成功すると、Web アプリケーションは、次の要求 (つまり、読みたいページを要求する) に使用する必要がある Cookie の名前と値のペアを返します。

サーバーが設定を要求するすべての Cookie のキーと値のペアを使用するか、重要なセッション Cookie を特定することができます。これは、Web アプリケーションの動作に依存します。セッション Cookie の名前と通常の値がどのように見えるかを把握するには、firebug や chrome の開発ツールなどのツールを使用して HTTP リクエストを調べてみてください。重要な Cookie の名前/値が何であるかを把握したら、次のリクエストでページを読み取ろうとするときにそれを送信するようにしてください。

これらすべてを PHP で行う最も簡単な方法は、cURLを使用することです。大まかなアイデアには 2 つの部分があります。

1) ユーザー名/パスワードをフォームの action="" プロセッサに送信し、Cookie 値のペアを返します。curl_init()curl_setopt()、およびを参照curl_exec()して、リクエストを初期化する方法を確認し、そのオプションを設定します (たとえば、タイプを POST に設定する、処理スクリプトが実際のブラウザにのみ応答する場合にブラウザ エージェント文字列を設定する、リクエストをヘッダーのみのリクエストとして設定するなど)。次に実行します。これを実行して Cookie の値を取得する方法の詳細については、同様の投稿をご覧ください

2) セッション cookie のキーと値のペアを取得したら、cookie と値のペアを指定してページを読み取り、以前に認証されたことを Web サイトが認識できるようにします。CURLOPT_COOKIEこの 2 番目のリクエストを設定するときにオプションを使用してcurl_setopt()、cookie=value ペアを指定します。cURL 経由で Cookie を送信する方法の詳細については、こちらの関連​​記事を参照してください。

于 2012-11-20T01:17:10.957 に答える
1

どのような保護ですか?BASIC AUTH の場合は、代わりに curl を使用してください。セッションの背後にある場合は、より複雑になります。

于 2012-11-20T00:34:55.853 に答える
1

ユーザー名とパスワードを URL エンコードして、URL に追加してみてください。

$encUser = urlencode($username);
$encPass = urlencode($password);
$handle = @fopen("http://{$encUser}:{$encPass}@www.webmasterworld.com", "rt");

HTTP 経由でドキュメントをフェッチするほとんどのライブラリは、URL の基本的な資格情報を理解します。

于 2012-11-20T00:53:47.973 に答える