2011-02-28 49 views
3

我有一個網站,我需要用用戶名和密碼以及驗證碼登錄。從安全的網站上刮取數據或自動執行平凡的任務

一旦我有一個控制面板有預訂。對於每個預訂,都有一個鏈接,用於具有預訂人的電子郵件地址的詳細信息頁面。

每天我都需要一個所有這些電子郵件地址的列表來發送電子郵件給他們。

我知道如何在刮.NET網站獲得這些類型的詳細信息,但不適合的網站,我需要先登錄。

我看到的一篇文章,我可以通過該cookie的頭和應該做的伎倆,但這將需要我在螢火蟲查看cookie並複製並粘貼。

這將由非技術人員起訴,所以這不是最好的選擇。

我在想的另一件事是他們可以運行的腳本在瀏覽器中自動執行此操作?有關如何做到這一點的任何提示?

回答

0

你可以看看火狐宏:http://www.iopus.com/imacros/firefox/

另一種選擇是在Winforms應用程序中託管WebBrowser控件,以便用戶可以使用驗證碼登錄。登錄後,所需的數據可能會被廢棄。

+0

我可能會考慮瀏覽器控制方法。除非腳本安裝快。謝謝 – ddd 2011-03-04 14:49:06

0

要在.NET中取消網站,有Html Agility Pack

這裏是解釋如何進行登陸它的鏈接:Using HtmlAgilityPack to GET and POST web forms

+0

只是在這裏注意到Simon是Html Agility Pack的原作者。 FYI Simon,嚴格遵守http://meta.stackexchange.com/questions/57497/limits-for-self-promotion-in-answers和http://meta.stackexchange.com/questions/156184/does-being-a -contributor-or-owner-of-an-open-source-project-count-as-it-being-y,SE策略是你應該在你的答案中公開這個聯盟(當它發生時我同意政策)。 – 2014-12-05 22:30:37

2

有些事你應該知道,無論你通過HtmlAgilityPack查詢網頁或直接使用HttpWebRequest類(HtmlAgilityPack使用它) :如何處理Cookie

這裏的基本步驟,您應該遵循:

  • 加載要在
  • 要記錄的頁面提交所需的信息登錄和使用POST方法(用戶名,密碼或任何頁面請求)
  • 保存Cookies中的響應,並使用那些Cookies從現在開始。
  • 請求與這些頁面Cookie並解析它與HtmlAgilityPack

這裏的東西用HtmlAgilityPack時,我總是這樣:使用HttpWebRequest而不是做HtmlWeb類的這種使用方法Load(..)發送請求到網站。

取入count,類中的Load方法的參數之一收到Stream。您只需傳遞response流(由request.GetResponseStream()獲取),您將擁有需要的HtmlDocument對象。

我建議你安裝Fiddler。它是檢測HTTP請求/響應的非常好的工具,無論是從瀏覽器還是從您的應用程序。

運行Fiddler,並嘗試登錄通過瀏覽器在網站上,看看有什麼瀏覽器發送到頁面,什麼頁面的回報,而這正是你需要使用HttpWebRequest類來效仿。

編輯:

的想法不只是傳遞一個靜態餅乾在頭中。它必須是曲奇通過返回的頁面登錄後,

要處理餅乾,看看HttpWebRequest.CookieContainer財產。這比你想象的容易。您只需聲明一個CookieContainer變量(空),並在將任何請求發送到網站之前將其分配給該屬性。當網站作出迴應時,應自動將Cookies添加到該容器中,以便您在下次請求網站時能夠使用它們。

編輯2:

如果你需要的是一個腳本,通過瀏覽器自動執行它,看看WatiN庫。我敢肯定,你就可以通過你自己,你看如何使用它;-)

+0

感謝您的解釋。我無法真正做到這一點的原因是因爲我不會成爲用戶,並要求某人查看Fiddler或Firebug來獲取cookie(哪些超時)並不是真正的選擇。如果登錄頁面上沒有驗證碼,這不會成爲問題。 – ddd 2011-03-04 14:48:00

0

自動化屏幕抓取一個兩個例子後運行它,硒是一個很好的工具。有兩件事 - 1)安裝Selenium IDE(僅適用於Firefox)。 2)安裝硒RC服務器

啓動硒IDE後,轉到您要自動化並開始記錄你在網站上做的活動現場。認爲它是在瀏覽器中記錄一個宏。之後,您將獲得所需語言的代碼輸出。

只要你知道Browsermob使用硒進行負載測試,併爲瀏覽器的自動執行任務。

我已經上傳了一段我曾經做過的ppt。這應該節省您的時間http://www.4shared.com/get/tlwT3qb_/SeleniumInstructions.html

一個良好的金額在上面的鏈接選擇正規下載的選項。

我花了很多時間好量計算出來,所以認爲它可以拯救別人的時間。