WebBrowser如何获取完整cookies

wenkekenihao 2013-06-07 07:43:18
最近在开发一个项目需要先登陆网站,然后去自动去做一些操作,用到了webbrowser,然后通过它去获取cookies,但后来发现WebBrowser不能获取带httpOnly的cookies。在网上找了很多资料,可以通过wininet.dll中的InternetGetCookieEx方法获取,试验没问题,所有cookies都拿到了,大功告成。由于是winform项目在很多机器上运行都没啥问题,今天无意中发现如果运行的电脑上的浏览器是IE8以下的版本,还是会出现cookies获取不完整的问题,也就是说IE6,ie7 还是获取不到带httpOnly的cookies,网上说IE6,IE7只能通过读取IE cookies目录里的文件手动解析的方法才能获取,但是我个疑问是:
我记得网站里分配的cookies 不是所有的IE都会写入硬盘的,只有设置了到期时间的才会写入硬盘,如果只是临时cookie,那么IE根本就不会把它写入硬盘,那么我根本就无法读取它,像这样的cookie就根本拿不到了吗?
以上是我的疑问,希望做过类似项目经验的大哥,不吝赐教啊
...全文
534 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
wenkekenihao 2013-06-08
  • 打赏
  • 举报
回复
引用 2 楼 sp1234 的回复:
[quote=引用 楼主 wenkekenihao 的回复:] 然后去自动去做一些操作,用到了webbrowser,然后通过它去获取cookies,但后来发现WebBrowser不能获取带httpOnly的cookies
谁知道你是怎样去获取的?[/quote] <DllImport("wininet.dll")> _ Public Shared Function InternetGetCookieEx(ByVal pchURL As String, ByVal pchCookieName As String, ByVal pchCookieData As StringBuilder, ByRef pcchCookieData As System.UInt32, ByVal dwFlags As Integer, ByVal lpReserved As IntPtr) As Boolean End Function Private Shared Function GetCookies(ByVal url As String) As String Dim datasize As UInteger = 256 Dim cookieData As New StringBuilder(CInt(datasize)) If Not InternetGetCookieEx(url, Nothing, cookieData, datasize, &H2000, IntPtr.Zero) Then If datasize < 0 Then Return Nothing End If cookieData = New StringBuilder(CInt(datasize)) If Not InternetGetCookieEx(url, Nothing, cookieData, datasize, &H2000, IntPtr.Zero) Then Return Nothing End If End If Return cookieData.ToString() End Function 调用wininet.dll通过InternetGetCookieEx方法获取
wodiaozuida1234565 2013-06-07
  • 打赏
  • 举报
回复
看看
  • 打赏
  • 举报
回复
引用 楼主 wenkekenihao 的回复:
然后去自动去做一些操作,用到了webbrowser,然后通过它去获取cookies,但后来发现WebBrowser不能获取带httpOnly的cookies
谁知道你是怎样去获取的?
wenkekenihao 2013-06-07
  • 打赏
  • 举报
回复
自己沙发,顶

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧