2011-03-29 32 views
0

我正在寫一個PHP腳本,搜索和使用捲曲讀取HTML內容。如何確定頁面是否爲登錄頁面?

我想從內容和/或響應頭,以確定目標頁面是否需要登錄後才能訪問。

我明白,通常情況下,當匿名請求頁面時,服務器會在需要重定向到登錄頁面。如我錯了請糾正我。

我看了四周,有幾個想法:

  1. 搜索refresh元標記或當HTTP返回代碼是302,然後檢查是否指的是URI與&action=login(或類似)
  2. 在有效頁面的正文中搜索登錄表單。 (我認識到在同一頁上可能有內容和登錄表單)

這些方法是否有效以及這些方法有多精確?我可以使用哪些其他技術/標誌來識別/建議登錄頁面?或者,這是一個不可能完成的目標,準確率達到60-70%?

注意:我沒有試圖刮,只是發現它是否是一個登錄頁面。

以下是相關選項,僅作參考。

curl_setopt($ch, CURLOPT_HEADER, 1); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
curl_setopt($ch, CURLOPT_MAXREDIRS, 5); 

預先感謝您

+0

我認爲你的回答,視乎你要訪問的站點。也就是說,你將不得不做一些preg_match語句來根據特定的數據來確定它。 http代碼並不是登錄頁面是否有效的具體證據(例如任何頁面都可以爲302)。 – PiZzL3 2011-03-29 01:49:01

+0

另外,現在很多網站在很多很多公開頁面上都有登錄表單。那麼多頁面並不一定是「主要的登錄頁面」。 – PiZzL3 2011-03-29 01:50:47

+0

@ PiZzL3 - 是的,我承認這些問題。我想有沒有簡單的方法來確認內容和登錄表單在同一頁面上。無論如何,當你提到「具體數據」時,你究竟指什麼? – JQonfused 2011-03-29 03:35:03

回答

2

查找重定向目標頁面上的表單與<input type='password'

+0

這將趕上最登錄頁面重新定向,但也有可能是得到重新定向,並有一個登錄的網站的部分頁面,但還是有一些不錯的內容。例如,站點上有成員登錄,但有大量公共內容構建在某個CMS上,該CMS有一些URL重定向爲具有相當的URL名稱。 – Rasika 2011-03-29 01:53:31

+0

點擊鏈接後,也會通過JavaScript呈現一些登錄信息。 – PiZzL3 2011-03-29 01:58:45

+0

@ PiZzL3 - 是的,但他們仍然有一個表格 – therealsix 2011-03-29 02:01:14