淘客熙熙

主题:请大家帮忙参考一下:这样的跨平台客户软件如何实现? -- kingcu

共:💬41 🌺7 新:
全看树展主题 · 分页首页 上页
/ 3
下页 末页
家园 万、十万……,楼下太守大人说了,……,

不过我觉得太有……喜感了……一、两个,十几个那是一回事,但是规模到这个程度的话,就一个人?六个月?

不过效率问题,确实需要自己写轮子了。

家园 没有底层基础的话,没戏。

告诉你一个方案;

1,在交换机上,把端口镜像出来;

2,买一个现成的抓包软件,抓包即可。

这里面有些效率的问题,可能应付不了百万级。我比较有经验,但是目前正好是敏感期,没法详谈。

家园 这个是客户端,和多少用户有什么关系呢?

一个用户,一万个用户,客户端都是一样的。用户多了,带来的问题是在server端解决的。

家园 交换机?这都哪儿跟哪儿啊?
家园 你们俩说的不是一回事

楼上以为你是要在交换机端口一下,同时监控上百万的用户

你的意思是这玩意会装到上百万的计算机上

我没理解错吧

家园 楼主要的需求是 ------- 获知某某机器,某某时间,

某某人(帐号),上了某某网。

交换机端方案的弱点是对某个抽象成单个IP的节点没有判断能力,比如某个192.168.x.x网段接入10.X.X.X网段,多个WINDOWS用户通过某个Terminal Server上网。

家园 更小心地问一句:蓝坝?

绿坝的升级版?

家园 恐怕让您失望了,和绿坝没关系

如果大家都想要个篮坝的话,要不我和老板商量商量,

家园 也是不妥

从IP报文中的找出http帧,应该不困难,而且具有通用性(适用于各种浏览器和OS),UI用QT之类的做一下很容易。这应该是一个熟练的工程师2个月左右可以完成的。 当这种方式法缺点在于对于一些穿墙(比如VPN/PROXY)或加密访问是是无法识别的。

家园 2个月做个马虎的差不多

只是对每个IP包里面一层一层解下去,找到URL,2个月差不多能完成

但是考虑细点,很多问题都不是一时半会能解决的

IP包的分片重组

TCP的重传,

TCP是流,所以要考虑到URL跨多个TCP包的情况

采集时丢包导致整个TCP流的错误

libpcap本身占CPU太高,对用户正常工作的干扰,等等等等。

一堆一堆的事情等着处理呢。

走VPN,只要不加密,一层一层解下去就成了,如果加了密,怎么都没戏

家园 【讨论】我的一点想法

1、Windows下使用winpcap,*nix下使用libpcap,winpcap和libpcap比较相似,跨平台代码写起来比较容易实现,也都支持64bit。缺点是可以获得系统所有的交换数据包,需要自己解析http协议。

2、利用proxy module,编写一个proxy module,监控的时候将浏览器的代理指向proxy module。这个方法可以准确的获得HTTP数据包,跨平台也可以比较方便的实现,主要在使用socket库时需要做一下操作系统的判断。但是要针对不同浏览器做个插件在进程启动过程中控制代理服务器的设置。

3、利用hook,hook掉浏览器进程的send/recv函数,这个方法不是太正规,但是省掉了设置浏览器的代理服务器。跨平台差一些,hook引擎基本上一个平台一套了。

基本上方法就是这些,获得数据包的方法不是太麻烦,如果只是记录访问的url,开发起来就简单许多。六个月是可以完成第一个版本。最麻烦的可能是做界面的部分。

全看树展主题 · 分页首页 上页
/ 3
下页 末页


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河