我想在连接到我的网络的某台电脑上记录http流量,以便了解用户访问了哪些网站。这个程序将在一家公司运行,可能会检查该工作人员是否不会去工作站点,也许可以查看统计数据。我只需知道什么电脑在什么时间浏览什么网站,没有其他信息。
我用网上搜索了几个小时没找到对我有用的东西。我尝试过wireshark,但是太复杂了,无法作为守护进程运行(我知道,也许我错了),那个窗口很大。
我试图将ServerSocket绑定到80端口,没有成功,似乎没有数据到达我的套接字。与Socket相同的结果(绑定到80 localhost)是否有任何类允许我在safari(或任何其他浏览器)和端口之间插入?
[在我被要求这样做之前,该公司使用键盘嗅探器几天。但这种方式的隐私是零,显然这不是正确的解决方案。]
有什么想法吗? 附:该计划不是“秘密”,工人知道它,但需要的是非管理员不能阻止它。
首选java解决方案,因为它是我所知道的唯一语言。
答案 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,一个防火墙软件,如aifw或ipmasq,这样您就可以防止访问网站了阻止他们的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(); > } }