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

 

采集通過。。。。

 

 

 

 



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM