我尝试使用Ruby Mechanize以编程方式登录并在ASP.NET站点上建立会话。问题是我似乎无法获取登录/身份验证所需的三个cookie。
例如,在浏览器使用用户名和密码向登录表单发出POST请求后,使用普通浏览器(例如Chrome)时,会设置三个Cookie:
ASPXAUTH
ASP.NET_SessionId
UserName
使用Mechanize尝试登录时,在提交登录表单后,Mechanize代理Mechanize::CookieJar
只包含一个Cookie:ASP.NET_SessionID
。
这显然导致后续登录页面的任何请求失败并抱怨"会话已过期"并且要#34;请再次登录。"
无论如何我可以通过编程方式获取另外两个cookie吗?它不一定必须通过Mechanize,但必须有一些方法将此cookie传递给它。
答案 0 :(得分:0)
事实证明,一些(大多数)ASP.NET按钮点击是通过Javascript处理的。当前版本的Mechanize(2.7)不支持Javascript交互。我转向Capybara WebKit作为无头司机。然后我能够与我需要的按钮进行交互。