zoukankan      html  css  js  c++  java
  • C# WebBrowser HttpWebRequest Cookie 的结合运用。

    在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=....................... ";

    采集通过。。。。

     


  • 相关阅读:
    windows 7 和 windows server 2013 重置SID
    设置 sharepoint 会话过期时间
    Sharepoint SPQuery语法
    sharepoint 2013 浏览器关掉cookies无效的脚本
    ueditor 集成使用 (sharepoint 集成)
    c#怎么获取当前页面的url
    部署Office Web Apps Server并配置其与SharePoint 2013的集成
    sharepoint 查询一个站点下所有的调查问卷 调查问卷的列表类型
    sharepoint 2013基于AD的Form表单登录(一)——登录配置
    你必须要知道的HTTP协议原理
  • 原文地址:https://www.cnblogs.com/Fooo/p/4533923.html
Copyright © 2011-2022 走看看