C# WebBrowser HttpWebRequest Cookie 的结合运用。
2015-05-27 17:10
204 查看
在WebBrowser下对网页进行操作其实是一件挺轻松的事情,他可以很方便实现自定义的网站访问习惯。而WebBrowser毕竟是对MS原生 控件的封装,当我们使用C#下的WebBrowser尤其是这样,虽然他可以更方便大家去调用,但是他的方便却是牺牲了灵活性为代价的。
有一天我想使用WebBrowser获取一个网站的COOKIE,在调用Document.Cookie时,发现无法完整获取其COOKIE,百思 不得其解,这么简单的功能,WebBrowser也会秀逗。经过抓包分析,发现原来该网站对写入到用户端关键的Cookie,加入httponly
HttpOnly,其实是一个提高WEB网站应用程序安全性的一个功能,但是大家往往都把他给忽略掉了。比如在ASP.NET 2.0的web.config的配制文件里就提供这个子的设置
<httpCookies httpOnlyCookies="true" />
//代码如:
HttpCookie myCookie = new HttpCookie("myCookie");
myCookie.HttpOnly = true;
Response.AppendCookie(myCookie);
在实际的项目中,用WebBrowser登录淘宝,尝试分别用办法一和办法二,然后将其Cookie传给了HttpWebRequest请求需要登录才能查看的淘宝页面,按理说,应该不用再用HttpWebRequest模拟登录一次的,可是返回的仍然是淘宝的登录页面。
//办法一:创建的CookieContainer
//myRequest.CookieContainer = myCookieContainer;
//办法二:
//myRequest.Headers[HttpRequestHeader.Cookie] = webBrowser1.Document.Cookie;
以上这二种办法,均发现 WebBrowser 的Cookie数量均减少,而且 JSESSIONID 不存在集合中。故模拟登陆策略失败。
//******************************************************************************************************
研究了近二天,切换另一个抓包神器,Fiddler2
//办法三
根据捉包工具,用IE或火狐实际登陆后,再根据得到的Cookie,复制相应的键值,加到HttpWebRequest 请求容器中,如下:myRequest.Headers[HttpRequestHeader.Cookie] = "cookie2=....................... ";
采集通过。。。。
有一天我想使用WebBrowser获取一个网站的COOKIE,在调用Document.Cookie时,发现无法完整获取其COOKIE,百思 不得其解,这么简单的功能,WebBrowser也会秀逗。经过抓包分析,发现原来该网站对写入到用户端关键的Cookie,加入httponly
HttpOnly,其实是一个提高WEB网站应用程序安全性的一个功能,但是大家往往都把他给忽略掉了。比如在ASP.NET 2.0的web.config的配制文件里就提供这个子的设置
<httpCookies httpOnlyCookies="true" />
//代码如:
HttpCookie myCookie = new HttpCookie("myCookie");
myCookie.HttpOnly = true;
Response.AppendCookie(myCookie);
在实际的项目中,用WebBrowser登录淘宝,尝试分别用办法一和办法二,然后将其Cookie传给了HttpWebRequest请求需要登录才能查看的淘宝页面,按理说,应该不用再用HttpWebRequest模拟登录一次的,可是返回的仍然是淘宝的登录页面。
//办法一:创建的CookieContainer
//myRequest.CookieContainer = myCookieContainer;
//办法二:
//myRequest.Headers[HttpRequestHeader.Cookie] = webBrowser1.Document.Cookie;
以上这二种办法,均发现 WebBrowser 的Cookie数量均减少,而且 JSESSIONID 不存在集合中。故模拟登陆策略失败。
//******************************************************************************************************
研究了近二天,切换另一个抓包神器,Fiddler2
//办法三
根据捉包工具,用IE或火狐实际登陆后,再根据得到的Cookie,复制相应的键值,加到HttpWebRequest 请求容器中,如下:myRequest.Headers[HttpRequestHeader.Cookie] = "cookie2=....................... ";
采集通过。。。。
相关文章推荐
- C# HttpWebRequest获取cookie
- 将WebBrowser的cookie信息传给HttpWebRequest
- C# : WebRequest发起Http Post请求模拟登陆并cookie处理示例
- c#HttpWebRequest修改cookie
- 将WebBrowser的cookie信息传给HttpWebRequest
- 将WebBrowser的cookie信息传给HttpWebRequest.
- C#网页采集数据的几种方式(WebClient、WebBrowser和HttpWebRequest/HttpWebResponse)
- C#网页采集数据的几种方式(WebClient、WebBrowser和HttpWebRequest/HttpWebResponse)
- js_html_input中autocomplete="off"在chrom中失效的解决办法 使用JS模拟锚点跳转 js如何获取url参数 C#模拟httpwebrequest请求_向服务器模拟cookie发送 实习期学到的技术(一) LinqPad的变量比较功能 ASP.NET EF 使用LinqPad 快速学习Linq
- .Net中 webbrowser 和 httpwebrequest 共用 cookie
- 【转载】C#网页采集数据的几种方式(WebClient、WebBrowser和HttpWebRequest/HttpWebResponse)
- C# 使用HttpWebRequest Post提交数据,携带Cookie和相关参数示例
- c#2.0中的HttpWebRequest涉及到的CookieContainer有点问题
- httpanalyzer 结合 HttpWebRequest Post的运用
- C#使用HttpWebRequest进行HTTP请求发送和接收的一些小结。(新增修复.NET4.0以下关于cookie的bug)
- C# 使用HttpWebRequest提交ASP.NET表单并保持Session和Cookie
- C#获取网页内容 (WebClient、WebBrowser和HttpWebRequest/HttpWebResponse)
- httpanalyzer 结合 HttpWebRequest Post的运用
- 从WebBrowser中取得Cookie 和 HttpWebRequest设置cookie!
- HttpWebRequest post 提交 C#的WebBrowser操作frame如此简单 WebClient 提交