2011-05-10 12 views
2

PHPを使用して認証が必要なウェブページのコンテンツを取得しようとしています。
理想的には、単純なhtml domパーサーhttp://simplehtmldom.sourceforge.netを使用したいと思います。
誰かがこれを行う方法を知っていますか?PHPはWebページから認証が必要なものを読み取る

編集:次のコードを試してみました

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POSTFIELDS, 'username=' . urlencode($username) . '&password=' . urlencode($pass));
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
echo curl_exec($ch);
curl_close($ch);

しかし、今、私は405 HTTPエラーを取得します。

+1

どのような認証ですか?シンプルなHTTP認証または実際のセッション保存データ? – Tjirp

+0

ええ、私は簡単なHTTP認証について話しているわけではありません、私は定期的なログインフォームについて話しています。 – Lior

答えて

3

私は一度もパーサーを使用したことはありませんが、サンプルコードでは、ファイルやURLからデータをロードできるように見えます。私はPHPのカール関数を使用して、いくつかの認証タイプを持つページに簡単にアクセスし、結果をファイルに保存してからライブラリを使用してファイルを解析することができます。

http://www.php.net/manual/en/book.curl.php

特にCURLOPT_HTTPAUTHオプションをチェックしてください。

これが役に立ちます。

編集:

405を検索する必要がありました。私はそれを見たことがない。私はあなたのコードは、私にはよさそうだ405についてのサーバーを実行している誰に話すでしょう

http://www.checkupdown.com/status/E405.html

を:ISPがSSLなしでそれらを許可していない可能性がPOST要求を許可、またはしないように聞こえます。ログインフォームを投稿すると、必要なページが返されますか、セッション情報が保存されたらもう一度プルダウンする必要がありますか?

+0

詳細を教えてください。 CURLOPT_HTTPAUTHを試みましたが、動作させることができませんでした。ところで、絶対に明確にするために、私はhtaccess認証ではなく、gmailやFacebookなどのフォーム認証を話しています。 – Lior

+0

私の編集をご覧ください。 – Lior

+0

Ah。 FacebookやGmailの認証を受けているほとんどの人は、Oauthを使用しています。これはまだ可能です。私はここに例のリンクを見つけました:(youtube、facebookではなく、oauthはouathです)http://stackoverflow.com/questions/1522869/how-do-i-use-oauth-with-php-and-curl興味のあるサイトのAPIをチェックし、詳細を変更することをおすすめします。 – lauren

関連する問題