如何在webbrowser中获取到 httponly cookie (注:IE8以下环境)

如何在webbrowser中获取到httponlycookie(注:IE8以下环境)... 如何在webbrowser中获取到 httponly cookie (注:IE8以下环境) 展开
 我来答
百度网友c274085a8
推荐于2016-09-25 · 超过51用户采纳过TA的回答
知道小有建树答主
回答量:90
采纳率:100%
帮助的人:85.3万
展开全部
c#的话貌似是用CookieContainer,如果使用win32api,则用HttpQueryInfo(...,HTTP_QUERY_RAW_HEADERS_CRLF,...)来取到所有的服务器返回头,这里边会包含所有的cookie,也就会含有httponly的cookie。

至于你说的ie8以下环境,无非是说ie8的库里InternetGetCookieEx可以取到httponly-cookie,你这样问,表示你没搞清楚cookie和相关函数的设计意图。

服务器端为了保持该客户之所以区别于其他客户的特性、以及该客户不同时刻的不同状态,会额外返给客户端一个标记字串,该字串称为请求头。然而当客户关掉程序时,该字串就会丢失,为了持久化这个字串,被迫将该串存到硬盘上,这个文件也称作cookie。这种做法会带来危险,可以编写无页面程序通过读取cookie文件来直接伪装成客户来访问服务器,尽管这种伪装未必是恶意的、或者带有攻击性的,它可能只是想取些最新的数据、做个工具程序等等。所以网站在cookie技术盛行之后的一段时间内,添加了httponly特性,有该标记的cookie子字串不会被写到硬盘上,这在原来被认为是避免非浏览器客户端访问服务器的有效办法。然而该方法已经不合时宜了,因为具有该标记的cookie仍会在头信息中被返给客户端,客户端依然可以轻松的得到该字段。目前比较常用的做法是服务器端验证请求报文的sessionID,该id由页面产生参数,服务器根据页面参数计算得出,页面中提供参数的代码通常是脚本代码,例如js。这样如果你想获得正确的请求头,就必须获取最新的sessionID,有两种方法:
1. 浏览页面源代码,找出脚本函数,然后运行脚本解释器,call该函数。由我的经验来看,尽管参数可以做到散布在页面各个角落,但是我还没有遇到过这么变态的,都是距离函数很近的参数。虽然调用速度较快,但是该方法比较复杂,而且必须针对特定页面人工分析。
2. 直接运行该页面,这样就是在模拟用户使用浏览器。虽然简单,但是每次刷新页面,速度会很慢,而且很耗资源。webbrower相关类里可能有解释页面但却不下载页面文件的参数(我没找到),但这样也有问题,就是我遇到过网站安全狗监测该类情况的,一旦你没有和该次请求相应的下载文件动作,安全狗会返给你一个验证页面,这又需要模拟点击……非常麻烦。

说了这么多,也不知道你看不看……
追问
非常感谢这位大侠详细剖析了整个过程。对我很有帮助!
追答
客气,偶也是一知半解,半瓶儿而已~你仔细看了偶就很高兴了~
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式