2011-05-12 58 views
2

我一直在嘗試使用Python和urllib/urllib2來刮取使用Microsoft堆棧(ASP.NET,C#,IIS)創建的網站(失敗,我可能會添加)。我也使用cookielib來管理cookie。在花了很長時間在Chrome瀏覽器中分析網站並檢查標題後,我一直沒有找到可以登錄的工作解決方案。目前,爲了使其在最基本的層面上運行,我已經使用所有適當的表單數據(甚至視圖狀態等)對編碼的URL字符串進行硬編碼。我也傳遞有效的標題。使用Python和urllib2刮取ASP.NET

我目前收到的響應如下:?

29 | pageRedirect ||/aspxerrorpath =/Default.aspx的|

我不知道如何解釋上述。另外,我在處理登錄字段時使用的客戶端代碼非常廣泛。

以下是它的工作方式:您輸入您的用戶名/密碼並點擊「登錄」按鈕。按下Enter鍵也可模擬此按鈕按下。輸入字段不在表單中。相反,在Login按鈕上有一些onClick事件(其中大部分僅用於審美),但有問題的則處理驗證。它在將其發送到服務器端之前做了一些基本的檢查。基於網絡資源,它絕對看起來是使用.NET AJAX。

通常在登錄本網站時,您需要將domian作爲POST以及用戶名和密碼的表單數據等等。然後,有一些URL重寫或重定向,將您帶到url.com/twitter的內容頁面。嘗試直接訪問url.com/twitter時,會將您重定向到主頁面。

我應該注意到我已經決定離開有問題的網址了。我沒有做任何惡意的事情,只是每合理增加一次時間就自動執行一次非常單調的檢查(我熟悉同情屏幕抓取)。但是,如果它沒有讓域名所有者滿意,那麼將我的StackOverflow帳戶與該帳戶關聯起來會很簡單。

我的問題是:我已經能夠在過去成功地登錄和自動化服務,其中沒有一個是基於.NET的。有什麼不同,我應該做的,或者我可能會離開?

回答

2

對於其他人,可能是在類似的困境在未來

我只是想指出,我已經有很多成功的在Chrome瀏覽器的Greasemonkey用戶腳本來完成所有我的刮和自動化。我發現它比Python + urllib2更容易(至少對於這種特殊情況)。用戶腳本是用100%Javascript編寫的。

+1

你能否詳細說明一下?有許多不同的用戶腳本... – 2012-11-20 16:46:17

1

當刮web應用程序中,我使用任一:

1)是Wireshark ...或...

2)的測井代理服務器(即記錄頭以及有效載荷)

然後,我用刮板的日誌來比較實際應用程序的功能(在這種情況下,瀏覽器如何與網站交互)。通過差異化工作將爲您帶來一個可行的解決方案。

+0

是否可以通過HTTP庫(如urllib)自動登錄?換句話說,在哪種情況下,Web應用程序的編碼方式會阻止無法繞過的自動登錄?我在認證後試圖抓取的網站採取了廣泛的措施來阻止殭屍程序(但在這種情況下,我正在考慮一種「殭屍」,以重複的垃圾郵件行爲的形式對網站造成不利影響)。我打算將網站作爲過濾器,並在繼續採取行動之前查找特定標準。比方說... 1支/分鐘。 – 2011-05-12 18:50:26

+2

只要您可以自己編寫/覆蓋所有標題,那麼瀏覽器無法執行任何操作,因此您應該無法模仿。 – 2011-05-13 13:19:59