主题:请大家帮忙参考一下:这样的跨平台客户软件如何实现? -- kingcu
准备开发的一个客户端软件,要求要跨平台,还要能够截获用户浏览器发出的http请求。具体要求如下,跨平台:要求能够在所有主流操作系统上运行,Windows 2000/XP/Vista/7,Mac OS X和Linux;截获浏览器的http请求:每当用户打开一个网页的时候,要求截获这个http请求,并记录其url,还要求支持所有的主流浏览器:FireFox, IE, Chrome, Opera, Safari。
做了几个初步设计,请大家帮着参考一下,如果您有更好的方案,还请不吝赐教。
方案一:
用Abobe AIR作为用户界面的平台,AIR runtime现在可以支持上面的三种系统,可以解决跨平台的要求。但是AIR没有什么系统级编程能力,所以无法直接截获HTTP Request。但是AIR可以进行文件操作,而浏览器的历史文件(history file)里存有访问过的url,所以可以通过读取这个history file,得到url。但是这个设计有太多的脆弱环节,AIR无法确切的知道系统上装了那些浏览器,浏览器的history不一定总是存在特定的位置,用户访问过的url也不一定总是会写入history,等等。而且,读取history的操作也会很复杂,因为不光每一种浏览器的history文件的格式不一样,就连同一种浏览器的不同版本之间都不一样,例如FireFox,3.0之前的版本用的是Mork文件格式,3.0开始用SQLite,但是3.0和3.5的SQLite Database Schema也不一样。
方案二:
把客户端分成两个部分,一部分是AIR做的用户界面,另一部分是系统级编程(native system programming)实现的http截获。但是程序分成两个部分,增加了复杂性,也降低了系统的可靠性。
方案三:
用Qt来实现客户端,由于是C++,而且Qt比AIR有多得多的系统编程支持,可以不需要把客户端分成两部分。
这个程序的关键在于如何截获http request,我现在没有任何具体的实现或是直接的资料,只知道几个大概的方向:在Windows下,可以用Winsock LSP(Layered Service Provider)实现;或者是写一个HTTP Proxy Server,然后让用户的所有浏览器都指向这个proxy。
- 相关回复 上下关系8
🙂请大家帮忙参考一下:这样的跨平台客户软件如何实现?
🙂【讨论】我的一点想法 2 晓风残月 字726 2010-01-15 08:15:59
🙂更小心地问一句:蓝坝? 1 meokey 字14 2010-01-14 13:02:35
🙂恐怕让您失望了,和绿坝没关系 kingcu 字56 2010-01-14 13:39:23
🙂这有一个免费的 HTTP Sniffe,省时省钱省心。 登高一呼 字566 2010-01-13 19:15:01
🙂不见得省心吧,看不到源代码的。 kingcu 字0 2010-01-13 19:20:03
🙂小声地问一下,你准备了多少预算?多少时间? 素里太守 字36 2010-01-13 17:11:57
😄时间6个月,预算就俺一人 kingcu 字0 2010-01-13 17:24:53