2016-03-08 110 views
1

我想为网站自动登录进程。使用C#HttpWebRequests登录到网站,然后在浏览器中打开

登录过程需要多个请求来收集cookie并根据这些cookie设置表单值。使用一些C#HttpWebRequests,我得到了最后一个HttpWebResponse返回我想要的数据的位置,这表明我已经成功进行身份验证。

是否可以在浏览器中打开此会话,以便在页面打开时登录?我开始认为它不是,因为我的会话与JSESSIONID cookie相关,并且我不知道如何在浏览器中手动设置它。

谢谢。

+0

Firefox允许您编辑HTTP请求标题,因此从技术上讲,您可以使用Firefox Dev Tools手动添加会话Cookie值,然后发送编辑后的HTTP请求。你的意图是简单地尝试HTTP头? –

+0

我的HTTP请求工作正常。我可以在HTTP响应中返回经过身份验证的页面(我可以看到诸如我的用户名和响应流中的“退出”之类的内容)。我希望能够在浏览器中打开此认证页面,而不是在HttpWebResponse流中查看其html。 – downvoter24

+0

然后,您需要手动将会话cookie等添加到浏览器的HTTP请求中。我不相信你可以直接在代码中做到这一点,但你可以使用Firefox的开发工具来轻松完成。您理论上应该能够以这种方式“劫持”由C#应用程序建立的会话。 –

回答

0

提供答案:

Cookie通过HTTP标头传递给Web服务器。浏览器在内部管理已为域设置的Cookie,并根据正在访问的域跟踪何时在HTTP请求中添加Cookie。最新版本的流行网页浏览器往往会阻止在他们自己的内部管理系统中注入cookie,如果它们没有通过HTTP响应正确设置的话。因此,我不知道你的C#代码可以直接在你的浏览器中设置一个cookie。

然而,

您可以尝试手动添加会话cookie和ETC到浏览器的HTTP请求(这将是一个整洁的实验,并应实际工作)。您可以使用Firefox的开发工具轻松完成此操作。您理论上应该能够以这种方式“劫持”由C#应用程序建立的会话。

您也可以通过您的HttpWebResponse流维持会话,但除非您正在开发Web浏览器,否则不容易在视觉上解释标记。

相关问题