2011-04-19 94 views
0

我想在C#中打開一個基於DOS的快速應用程序來幫助我完成一些常需要在網站上執行的任務。我需要訪問的其中一個頁面需要您登錄才能查看源代碼。這不應該是一個問題,我有一個有效的用戶名和密碼。我在這裏發現了這樣一個問題:JavaScript用C#登錄網站Http

Login to website, via C#

還告訴我,我怎麼能發送POST請求到特定的URL,並檢索與該要求我先登錄任何網頁以備將來使用頭的cookie。

如果不是因爲登錄頁面上的POST表單比單純的「用戶名」和「密碼」字段稍微複雜一些,這將很好地工作。看一下表單,它有一個「OnSubmit」對javascript函數的調用,該函數接受用戶名和密碼,並將它們加密成某種散列(也許是md5加上一些額外的位和bobs),然後將它們保存在登錄表單。

我在想這可能可以從C#運行javascript函數嗎?如果我可以檢索HTML文件(包含JS),然後使用C#運行該JS函數,然後從POST請求中檢索該JS有效發送的cookie。更進一步的複雜性可能在於我不確定JS函數是存儲在本地還是通過標記鏈接。

回答

3

該網站聽起來像是在做一些很好的事情,例如,散列您的密碼,而不是以明文形式發送。

我想說你有三個基本選擇。您可以簡單地使用WebBrowser控件而不是使用HttpWebRequest,並讓網站按照預期的方式工作。您的代碼可以填寫表單並單擊提交按鈕。

您可以嘗試在您的應用程序中運行JavaScript,儘管這些工具看起來不是過時就是可能。過去搜索SO進行討論,例如this one.

如果這是真的值得你,你可以複製在C#中的JavaScript的功能,並完成所有的工作,你自己,在發佈前剛剛填充的最後領域。像哈希函數那樣轉換算法程序可能不是很困難。很可能它是一個標準的SHA算法,它已經是.NET的一部分了。當然,如果網站上的事情發生變化,您將來可能會遇到問題。

除非您確實需要超級清潔解決方案,否則我只需使用WebBrowser控件並讓該站點執行其操作。

+0

我使用了WebBrowser控件 - 很好地完成了這項工作。謝謝您的幫助。 – DrLazer 2011-05-23 11:51:09