终于完成的webbrowser永久记录cookie功能
来源:互联网 发布:程序员必看的电影 编辑:程序博客网 时间:2024/04/30 02:58
说说最初的想法 :
一 、根据文件名把cookie拷出去,修改其过期时间,需要用的时候在拷贝到cookie目录。
失败原因:这个方法比较幼稚,没有可实现性,单纯的拷贝文件到cookie目录并不会被系统识别为cookie文件,因为系统检索cookie是通过 index.bat文件,没有在这个文件加入记录就不会被系统检索到,(证据 现在在win7的系统下,cookie的文件名已经和网址没有关系了,名字是随机的),只有cookie文件里面的 domain+path与网址有关。
二、登录网站以后通过GetCookie,或者GetCookieEx的方式获取cookie,将cookie另存,以后使用的时候通过SetCookie重新写入Cookie。
失败原因: GetCookie,和GetCookieEx需要准确知道当前页面的url 和 所加载的所有子页url的地址,我们访问一个网页,可能有多个iframe,就科可能有多个不同域的url,还有些网页通过javascript动态加载,其url很难获得,所以某些网站不能完全获得cookie。
三、登录网站以后通过文本的方式读取cookie目录下的cookie,在再次访问前通过SetCookie写入所有Cookie。
失败原因:情况很复杂,应该主要问题还是读到的cookie不完整,未能获取httponly属性的cookie。对浏览器的行为不清楚,无法判断什么时候能读到完整的cookie。
现在的做法:
Hook 对当前进程 wininet.dll的调用,用了hook以后世界突然美妙起来了。 在InternetCloseHandle之前保存所有的cookie,在HttpOpenRequest的时候SetCookie。 软件主题部分是C#,所以webbrowser是C#,Hook 部分采用的是c++来实现。
比较重要的有两点
1 webbrowser访问网站和程序主线程不是在一个线程,因此 在InternetCloseHandle 保存cookie的时候一定要注意保证互斥,要不然程序可能会报stack overflow 异常,死掉。这个问题不好调试,因为你不知道它什么时候出现,我就为这个耗了整整一周,人都憔悴了。
2 Hook 了HttpOpenRequest以后可以很轻松的实现过滤webbrowser的内容,例如要屏蔽 js,根据HttpOpenRequest参数中的url判断一下后缀,如果是.js的,直接调用InternetCloseHandle关闭就可以了,同理也可以屏蔽 .swf .flv .gif .jpg .png .bmp……
- 终于完成的webbrowser永久记录cookie功能
- 终于完成了修改的功能
- WebBrowser的Cookie操作
- WebBrowser的Cookie操作
- WebBrowser的Cookie操作
- WebBrowser的Cookie操作
- WebBrowser的Cookie操作
- WebBrowser的Cookie操作
- Jsp使用Cookie完成记住账号密码的功能
- 如何获取webbrowser的cookie
- 终于完成了人员汇总功能
- 今天终于完成了加载模型功能
- 两种类型的cookie--临时cookie和永久cookie
- 终于在android下面完成了ffmpeg最新版的编译,弱弱的记录
- 经过两天的艰苦奋斗终于完成了数据库的备份功能
- 使用Cookie实现商品的浏览记录功能
- JS使用cookie完成记住密码功能
- webbrowser局部刷新完成的问题
- 线程暂停问题的解决
- Linux下Apache与tomcat的整合
- linux查看硬件配置的命令
- MFC颜色对话框的使用
- 龙门飞甲的一点小小感想
- 终于完成的webbrowser永久记录cookie功能
- 百万数据查询优化技巧三十则
- Struts中,bean write的属性
- Dos批处理读取配置文件的方法
- 一个苏州IT人的5年挨踢经历-------面试篇(之二)
- Postgresql Executor 阶段内存结构
- Postmaster的Memory Context 初始化内存结构
- Postmaster的Shared Memory中的shared buffer pool内存结构
- Postmaster的Shared Memory中的shmem index table 内存结构