我試圖寫一個腳本在C#能夠從網站檢索一些信息。這些信息是受保護的,所以我需要登錄才能閱讀它們。這就是我認爲應該是我的程序:登錄到需要使用c#的Cookie的網站#
- 首先使用POST請求登錄到網站。這裏是我的第一個問題:我找到登錄表單的頁面是https://idp.kk-abcdefg.com/idp/Authn/UserPassword。我應該向這個頁面提交POST請求還是應該使用不同的地址?
我已經使用Firefox或Chrome的某些工具測試了標頭,但我無法理解哪個是正確的過程。我注意到,如果我打開這個登錄頁面,我會收到一些cookie。如果我刪除這些cookie並嘗試通過插入用戶名和密碼(通過瀏覽器)登錄,我收到一個錯誤,作爲網站的迴應..它說我需要激活cookie才能夠登錄。因此,當我第一次打開登錄頁面時,似乎收到一些cookie,然後我需要將它們與第一次POST請求登錄在一起。這對你們中的任何人都有意義嗎?
這就是我現在使用的代碼:
string formUrl = "https://idp.kk-abcdefg.de/idp/Authn/UserPassword";
string formParams = string.Format("j_username=MyUserName&j_password=MyPassword」);
string cookieHeader;
string pageSource;
WebRequest req = WebRequest.Create(formUrl);
req.ContentType = "application/x-www-form-urlencoded";
req.Method = "POST";
byte[] bytes = Encoding.ASCII.GetBytes(formParams);
req.ContentLength = bytes.Length;
using (Stream os = req.GetRequestStream())
{
os.Write(bytes, 0, bytes.Length);
}
WebResponse resp = req.GetResponse();
cookieHeader = resp.Headers["Set-cookie"];
using (StreamReader sr = new StreamReader(resp.GetResponseStream()))
{
pageSource = sr.ReadToEnd();
}
,我相信這是工作,因爲如果我使用正確的用戶名/密碼pageSource的結果改變或者我寫他們錯了。但是當用戶/密碼正確時,我仍然無法登錄,因爲我收到以下錯誤消息:「此應用程序需要cookie,請確保在瀏覽器設置中啓用了Cookie,請重新加載登錄頁面並嘗試再次登錄「。
這與我在瀏覽器中禁用Cookie時獲得的錯誤相同,或者我刪除了第一次加載登錄頁面時得到的cookie。
你能幫助我嗎?我的想法是,我需要保存第一次打開登錄頁面時收到的Cookie,然後將它們與以下請求一起發送,但我不知道該怎麼辦..
非常感謝!
您是否嘗試過使用Fiddler查看登錄後在請求上設置了哪些Cookie?這樣你可以複製相同的行爲。我看到你正在得到餅乾,但可能不會在任何地方設置它們。 – bc004346