2011-05-10 73 views
2

我試圖獲取需要使用PHP進行認證的網頁內容。
理想情況下,我想使用簡單的html dom解析器:http://simplehtmldom.sourceforge.net
任何人都知道如何做到這一點?PHP從需要認證的網頁讀取

編輯:
嘗試下面的代碼:
$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 2011-05-10 15:10:50

+0

是的,我不是在談論簡單的HTTP身份驗證,而是在談論常規的登錄表單。 – Lior 2011-05-10 16:59:16

回答

3

我從來沒有使用該解析器,但他們的示例代碼使它看起來像它可以從文件或URL加載數據。我將使用php的curl函數,它可以輕鬆地訪問包含多種類型身份驗證的頁面,將結果保存到文件中,然後使用該庫來解析文件。

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

退房的CURLOPT_HTTPAUTH選項明確。

希望這會有所幫助。

編輯:

我不得不查看405;我從來沒有見過一個。這聽起來像您的ISP不允許POST請求,或可能不允許他們不使用SSL:

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

我會跟誰運行你對405您的代碼對我來說很好服務器。張貼登錄表單是否會返回所需的頁面,或者是否在保存會話信息後不得不拉下另一個表單?

+0

請您進一步解釋一下嗎?嘗試了CURLOPT_HTTPAUTH,但無法使其正常工作。順便說一下,爲了說明問題,我不是在談論htaccess身份驗證,而是一種表單身份驗證,例如Gmail或Facebook等。 – Lior 2011-05-10 16:44:26

+0

請參閱我的編輯。 – Lior 2011-05-10 17:33:45

+0

啊。大多數做Facebook或Gmail認證的人會使用Oauth。這仍然是可能的;我在這裏找到了一個示例鏈接:(youtube,而不是facebook,但oauth是ouath)http://stackoverflow.com/questions/1522869/how-do-i-use-oauth-with-php-and-curl。我建議查看您感興趣的網站的API並更改詳情。 – lauren 2011-05-11 00:38:36