嗅探访问过的站点并保存到文件中



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

我上网搜索了几个小时,没有发现任何对我有用的东西。我尝试了wireshark,但太复杂了,不能作为守护程序运行(我知道,也许我错了),而且窗口很大。

我试图将ServerSocket绑定到80端口,但没有成功,似乎没有数据到达我的套接字。Socket的结果相同(绑定到80 localhost)是否有任何类允许我在safari(或任何其他浏览器)和端口之间插入?

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

知道吗?附言:这个计划不会是"秘密"的,工作人员知道它,但需要的是,非管理人员不能阻止它。

java解决方案是首选,因为它是我唯一知道的语言。

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

你必须明白,要做到这一点,你需要处于专用网络和互联网之间,很可能有一个linux防火墙为专用网络计算机进行NAT。

如果你可以运行非java软件,那么你可以使用dsniff中的urlsnarf软件。您可以运行它并将其保留在后台日志中,也可以通过端口或ip进行过滤。

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

对于基本启动:

urlsnarf -n -i eth0 

这将开始记录到tcp端口80、8080或3128上的所有url的stdout。如果您想存储捕获以供以后可视化(例如使用wireshark),可以使用-p选项。

如果你问我,我认为你做得不对,你应该放一个透明的代理,拒绝访问"未经授权"的网站,而不是记录每个请求的http url。否则,你侵犯了人们的隐私,根据国家的不同,这甚至可能是非法的。

为NAT设置服务器并不困难,你只需要一台带有两个网卡的linux PC,一个像aifw或ipmasq这样的防火墙软件,有了它,你就可以通过阻止网站的IP来阻止访问网站了。如果你还想处理http流量包数据,你需要一个透明的代理(而不是反向代理),最流行的是Squid。

如果你喜欢《鱿鱼》,我建议你去看看《鱿鱼卫士》。

如果你坚持自己编写一个除了注释上留下的警告之外的代码,毫无疑问你应该使用jpcap库,请查看示例部分,那里已经有代码可以用来快速启动。

祝你好运!

这个线程已经快9年了,但如果有人仍在寻找答案。。。。。

看看这个https://superuser.com/questions/52181/how-to-track-websites-that-have-been-visited

通过检索访问的文件列表创建一个命令,并将其保存为.txt,将其保存到您的数据库和voila中。你已经实现了每台电脑的站点跟踪

请使用java检查此代码以下载/查看并清除(删除缓存)访问的网站列表:

> 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();
>     } }

最新更新