我想在连接到我的网络的一些PC上记录http trafic,以便知道用户访问过哪些网站。这个程序将在公司里运行,也许是为了检查工人是否在工作之余去了一些网站,也许是为了统计。我只需要知道什么电脑在什么时间浏览了什么网站,没有其他信息。
我在网上搜了好几个小时,也没有找到任何有用的信息。我试过wireshark,但是太复杂了,而且不能以守护进程的形式运行(据我所知,也许我错了),而且那个窗口很大。
我试着把ServerSocket绑定到80端口,没有成功,似乎没有数据到达我的socket。同样的结果是Socket(绑定到80 localhost),有没有什么类可以让我在safari(或其他浏览器)和端口之间插入?
在我被要求这样做之前,公司用键盘嗅探器做了几天。但这种方式的隐私性为零,显然这不是正确的解决方案。]
有什么想法吗?P.s.这个程序不会是 "秘密",工人们都知道,但需要的是非管理员的人不能阻止它。
最好是java语言的解决方案,因为我只懂这一门语言。
根据你最后的评论(你应该更新你的问题),我明白你需要一些东西来记录所有的http流量。
你必须明白,要做到这一点很容易,你需要在私人网络和互联网之间的中间,很可能用Linux防火墙为私人网络计算机做NAT。
如果你可以运行非java软件,那么你可以使用urlsnarf软件,从 嗅探 为你想要的东西。你可以运行它并让它在后台记录,你也可以通过端口或ip进行过滤。
大多数发行版已经有一个名为dsniff的软件包,其中包括urlsnarf命令。
对于基本的开始。
urlsnarf -n -i eth0
这将开始记录所有在TCP端口80, 8080或3128上的url的信息到stdout. 如果你想存储一个捕获的数据,以便于以后的可视化(比如用wireshark),你可以使用 -p
选项。
如果你问我,我认为你这样做是错误的方式,你应该把一个透明的代理,只是拒绝访问 "非授权 "的网站,而不是记录每一个http网址请求。否则,你侵犯了人们的隐私,根据不同的国家,它甚至可能是非法的。
设置一个NAT服务器并不难,你只需要一台linux电脑和两块网卡,一个防火墙软件,如 aifw 或 ipmasq有了这个功能,你已经可以通过屏蔽网站的IP来防止网站的访问。如果你也想搞乱http流量包的数据,你需要一个透明的代理 (不是反向代理),最受欢迎的是 鱿鱼.
我建议你去看看 SquidGuard 如果你选择了Squid。
如果你坚持要自己编写一个,除了在注释上的左警告,毫无疑问,你应该使用 jpcap库,检查 示例部分 那里已经有代码,你可以用它来快速入门。
祝您好运!
这条线已经快9年了,但如果有人还在寻找答案的话......。
看看这个https:/superuser.comquestions52181如何跟踪已经访问过的网站。
创建一个命令,通过检索访问的文件列表,并保存为.txt,保存到你的数据库,瞧,你已经实现了跟踪每个PC的网站。
请检查这段代码,使用java下载view和清除(删除缓存)访问的网站列表。
> import java.io.IOException; > > public class DNS_Actions { > public void RetrieveDNS(){ > try { > Process p = Runtime > .getRuntime() > .exec("cmd /min start cmd.exe /K \" cd "+System.getProperty("user.dir")+" && ipconfig /displaydns > > lists.txt\""); > } catch (IOException e) { > // TODO Auto-generated catch block > e.printStackTrace(); > } > } > public void purgeDNS(){ > try { > Process p = Runtime > .getRuntime() > .exec("cmd /min start cmd.exe /K \" ipconfig /flushdns\""); > } catch (IOException e) { > // TODO Auto-generated catch block > e.printStackTrace(); > } > } > public static void main(String[] args){ > new DNS_Actions().RetrieveDNS(); > } }