基于代理监控外网访问小软件
时间:2011-06-15 来源:lxk613
本设计针对网站的访问和特定文件夹的操作进行记录。对网站的访问的审计记录涉及到访问的主机,时间,请求参数等。对文件的记录主要涉及添加,删除,修改,重命名等。本程序是基于C#,VS2010开发。使用步骤:打开软件,点击“监控”之后,软件工作。此时所有对外网访问的HTTP请求都会被记录。点击文件操作审计标签,则进行文件的审计。
1)在网站访问监控方面:使用FiddlerCore客户端代理处理HTTP协议,经过处理之后,监控到浏览器对外部网站的每一个请求,记录,分析请求之后呈现到用户界面中。
2)文件监控只是实现了FileSystemWatcher类,针对用户选择的文件夹和文件类型来监控,可以对特定的文件监控(打开,删除,修改,重命名等操作)。有图有真相!需要下载的可以到CSDN下载:http://download.csdn.net/source/3366745
/// <summary> /// 开始对访问的网站进行分析 /// </summary> public void startFidder() { //通知事件委托 Fiddler.FiddlerApplication.OnNotification += delegate(object sender, NotificationEventArgs oNEA) { AddMessageform("OnNotification is "+oNEA.NotifyString+"\n"); }; //记录日志事件委托 Fiddler.FiddlerApplication.Log.OnLogString += delegate(object sender, LogEventArgs oLEA) { AddMessageform("OnLogString is "+oLEA.LogString+"\n"); }; Fiddler.FiddlerApplication.BeforeRequest += delegate(Fiddler.Session oS) { //此处可以对请求和响应进行响应的修改和处理 AddMessageform("请求的相应为: "+oS.fullUrl + "\n"); HostStatistical(oS); oS.bBufferResponse = true; }; Fiddler.FiddlerApplication.BeforeResponse += delegate(Fiddler.Session oS) { //Console.WriteLine("{0}:HTTP {1} for {2}", oS.id, oS.responseCode, oS.fullUrl); AddMessageform("请求序号为:"+oS.id+"响应的状态码为:"+oS.responseCode+"服务器返回的URL地址为:"+oS.fullUrl); HostStatistical(oS); //oS.utilDecodeResponse(); oS.utilReplaceInResponse("Microsoft", "Bayden"); }; Fiddler.FiddlerApplication.AfterSessionComplete += delegate(Fiddler.Session oS) { HttpSession hs = new HttpSession(oS); Sessions.Add(hs); AddMessageform("\n最终的会话信息:\t" + oS.fullUrl + "\n"); HostStatistical(oS); }; Fiddler.CONFIG.IgnoreServerCertErrors = false; // 可以对HTTPS信息进行监控,但是需要使用到MakeCert.exe文件放置呆应用程序的文件夹中 Fiddler.FiddlerApplication.Startup(8877, true, true);//程序运行时,自动将浏览器设定为此端口,以便监控系统侦听 // Wait Forever for the user to hit CTRL+C. // BUG BUG: Doesn't properly handle shutdown of Windows, etc. Object forever = new Object(); lock (forever) { System.Threading.Monitor.Wait(forever); } } /// <summary> /// 对访问主机的统计 /// </summary> /// <param name="os"></param> public void HostStatistical(Fiddler.Session os) { string host = string.Empty; string[] tempArray = os.hostname.Split('/');//os.hostname格式为:http://www.baidu.com/id/china/my.php host = tempArray[0]; if (tempArray.Length>2) { host = tempArray[2];//tempArray[0]="http:",tempArray[1]="",tempArray[2]=www.baidu.com } if (!hashSite.ContainsKey(host)) { hashSite.Add(host, 1);//key为主机,value为访问次数 } else { int count = Convert.ToInt32(hashSite[host].ToString()); hashSite.Remove(host); hashSite.Add(host, count + 1); } }
相关阅读 更多 +