2015-06-18 41 views
0

我試圖使用Ruby機械化以編程方式登錄並在ASP.NET網站上建立會話。問題是我似乎無法抓住登錄/認證所需的三個cookie。使用機械化獲取ASP.NET身份驗證Cookie

例如,使用通常的瀏覽器,如鉻的情況下,瀏覽器發出一個POST請求與用戶名和密碼登錄表單之後,三個cookie被設置:

  • ASPXAUTH
  • ASP.NET_SessionId
  • UserName

當使用機械化嘗試登錄,登錄表單提交後,將機械化代理Mechanize::CookieJar只包含一個cookie:ASP.NET_SessionID

這顯然會導致任何後續登錄後頁面的請求失敗,並且抱怨「會話已過期」並且「請重新登錄」。

反正有,我可以通過編程獲取其他兩個cookie嗎?它不一定必須通過機械化,但必須有某種方式將此cookie傳遞給它。

+0

如果您的瀏覽器正在設置機械化cookie,那麼可能會涉及到一些JavaScript。你可能想考慮切換到Watir。 – pguardiario

+0

這是正確的!謝謝,我現在就讓它成爲自己的答案。 –

回答

0

事實證明,一些(大多數)ASP.NET按鈕點擊是通過Javascript處理的。 Mechanize(2.7)的當前版本不支持Javascript交互。我改用Capybara WebKit作爲無頭司機。然後我就能夠與我需要的按鈕進行交互。