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

时间:2012-10-11 00:27:23

标签: java http url browser sniffer

我想在连接到我的网络的某台电脑上记录http流量,以便了解用户访问了哪些网站。这个程序将在一家公司运行,可能会检查该工作人员是否不会去工作站点,也许可以查看统计数据。我只需知道什么电脑在什么时间浏览什么网站,没有其他信息。

我用网上搜索了几个小时没找到对我有用的东西。我尝试过wireshark,但是太复杂了,无法作为守护进程运行(我知道,也许我错了),那个窗口很大。

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

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

有什么想法吗? 附:该计划不是“秘密”,工人知道它,但需要的是非管理员不能阻止它。

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

2 个答案:

答案 0 :(得分:1)

根据你的上一条评论(你应该更新你的问题btw)我知道你需要记录所有的http流量。

您必须明白,要轻松实现这一目标,您需要处于专用网络和互联网之间,可能是Linux防火墙为专用网络计算机执行NAT。

如果你运行非java软件,那么你可以使用dsniff中的软件urlsnarf来获得你想要的东西。您可以运行它并将其保留在后台日志记录中,您也可以通过端口或IP进行过滤。

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

基本开始:

urlsnarf -n -i eth0 

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

如果你问我,我认为你这样做是错误的,你应该放一个透明的代理,只是拒绝访问“未授权”的网站,而不是记录所要求的每个http网址。否则你就是在侵犯人们的隐私,这取决于国家甚至可能是非法的。

为NAT设置服务器并不困难,您只需要一台带有两个网卡的Linux PC,一个防火墙软件,如aifwipmasq,这样您就可以防止访问网站了阻止他们的IP。如果您还想弄乱http流量数据包数据,则需要透明代理(not a reverse proxy),最受欢迎的是Squid

如果您选择Squid,我建议您查看SquidGuard

如果你坚持自己编写一个除了警告左边的评论,毫无疑问你应该使用jpcap library,检查examples section你已经可以用来快速启动的代码。

祝你好运!

答案 1 :(得分:0)

此主题将近9年,但如果万一有人还在寻找答案.....

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

通过检索已访问文件的列表来创建命令,并通过.txt保存该命令,然后将其保存到数据库和目录中。您已经实现了每台PC的站点跟踪。

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