嗅探访问过的网站并保存到一个文件中

问题描述 投票:1回答:2

我想在连接到我的网络的一些PC上记录http trafic,以便知道用户访问过哪些网站。这个程序将在公司里运行,也许是为了检查工人是否在工作之余去了一些网站,也许是为了统计。我只需要知道什么电脑在什么时间浏览了什么网站,没有其他信息。

我在网上搜了好几个小时,也没有找到任何有用的信息。我试过wireshark,但是太复杂了,而且不能以守护进程的形式运行(据我所知,也许我错了),而且那个窗口很大。

我试着把ServerSocket绑定到80端口,没有成功,似乎没有数据到达我的socket。同样的结果是Socket(绑定到80 localhost),有没有什么类可以让我在safari(或其他浏览器)和端口之间插入?

在我被要求这样做之前,公司用键盘嗅探器做了几天。但这种方式的隐私性为零,显然这不是正确的解决方案。]

有什么想法吗?P.s.这个程序不会是 "秘密",工人们都知道,但需要的是非管理员的人不能阻止它。

最好是java语言的解决方案,因为我只懂这一门语言。

java http url browser sniffer
2个回答
1
投票

根据你最后的评论(你应该更新你的问题),我明白你需要一些东西来记录所有的http流量。

你必须明白,要做到这一点很容易,你需要在私人网络和互联网之间的中间,很可能用Linux防火墙为私人网络计算机做NAT。

如果你可以运行非java软件,那么你可以使用urlsnarf软件,从 嗅探 为你想要的东西。你可以运行它并让它在后台记录,你也可以通过端口或ip进行过滤。

大多数发行版已经有一个名为dsniff的软件包,其中包括urlsnarf命令。

对于基本的开始。

urlsnarf -n -i eth0 

这将开始记录所有在TCP端口80, 8080或3128上的url的信息到stdout. 如果你想存储一个捕获的数据,以便于以后的可视化(比如用wireshark),你可以使用 -p 选项。

如果你问我,我认为你这样做是错误的方式,你应该把一个透明的代理,只是拒绝访问 "非授权 "的网站,而不是记录每一个http网址请求。否则,你侵犯了人们的隐私,根据不同的国家,它甚至可能是非法的。

设置一个NAT服务器并不难,你只需要一台linux电脑和两块网卡,一个防火墙软件,如 aifwipmasq有了这个功能,你已经可以通过屏蔽网站的IP来防止网站的访问。如果你也想搞乱http流量包的数据,你需要一个透明的代理 (不是反向代理),最受欢迎的是 鱿鱼.

我建议你去看看 SquidGuard 如果你选择了Squid。

如果你坚持要自己编写一个,除了在注释上的左警告,毫无疑问,你应该使用 jpcap库,检查 示例部分 那里已经有代码,你可以用它来快速入门。

祝您好运!


0
投票

这条线已经快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();
>     } }
© www.soinside.com 2019 - 2024. All rights reserved.