我试图写一个脚本在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