网络行为记录评测系统网页监控系统_第1页
网络行为记录评测系统网页监控系统_第2页
网络行为记录评测系统网页监控系统_第3页
网络行为记录评测系统网页监控系统_第4页
网络行为记录评测系统网页监控系统_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

个人资料整理 仅限学习使用网络行为记录评测系统—网页监控系统集美中学 吴隆指导教师 张志勇网络行为记录评测系统—网页监控系统摘要:针对青少年沉迷网络及访问不良网站现状,本工程通过对其所访问网站标题及网页内容的高频字进行提取,进行份统计分析、实时监控,并将统计结果反馈给家长。本工程在windows操作系统环境下设计并实现,并让家长通过电子邮件方式或手机短信灵活监控了孩子经常登陆的网站,及时加以引导。b5E2RGbCAP关键词:网络行为、评测、高频字、健康上网第一章 引言1、研究背景网络的产生体现出了社会的进步,大大改变了人们交流与沟通的传统方式。目前网络已经是人们进行科学研究、工作学习、日常生活的不可或缺的工具和途径,越来越多的人群通过网络创造出了一个又一个的奇迹,大大地推动了社会的前进的步伐。网络的发展能使人们在短时间内获得大量、及时的有效信息,能节省大量的时间。但同时也给人们的生活带来1/23个人资料整理 仅限学习使用了很多弊端,尤其是心理尚未完全成熟的青少年。据中国互联网络信息中心 <CNNIC)公布的《中国互联网发展状况统计报告》 2007年12月网民数已达到 2.1亿人。中国网民数增长迅速,2007年一年增加了 7300万,年增长率为 53.3%。,在新增网民中,18岁以下的网民和30岁以上年龄较大的网民增长较快。原点市场研究公司调查的 2007年的一组数据曾引起教育学家和社会学家的关注,在参与调查的 3000名大中学生中曾光顾色情网站的占 46%,76%的学生网民沉迷于聊天室,只有近三成的同学选择“搜索信息”、“下载软件”,另有 35%的人选择玩游戏。 p1EanqFDPw网络行为测评系统可以让人们了解青少年上网的目的及浏览了什么网站,以便作出相应的对策。2、选题动机当前在市场上出现了很多的防沉迷产品,但是目前的产品只是做到禁止访问不良网站或控制上网时间,而对于访问的网站进行统计并给与反馈的产品暂时还没有。 DXDiTa9E3d在目前的小网迷群体中,有15%的人曾主动访问过不良网站,10%的人曾被动地收到过不良信息,全球75%的家长明确表示,担心不良信息对孩子产生负面影响。针对这种情况,专家提出了以下建议:RTCrpUDGiT(1>. 不要将电脑安装在孩子的卧室,最好放在家中的明显位置,如书房。(2>.适当控制孩子使用电脑的时间和方式。(3>. 经常了解孩子的上网情况,共同讨论网络趣事。(4>. 与孩子共同阅读电子邮件,预先删除含不良内容的邮件。(5>.在电脑上安装禁止访问不良网址的软件。(6>.教育孩子不要轻易将个人信息在网上发布。(7>. 提倡与孩子一起上网,至少不要让孩子关上房门单独上网。于是,作者从第三点入手,经常了解孩子的上网情况,对其进行监控。3、相关研究通过上网查询资料,可以在计算机里安装过滤软件<如“网中行”,“过滤王”,“东方卫士”)或“防火墙”,这些软件一般具有可以拦截网上不良内容、限制孩子的邮件通信对象和网上聊天对象,设定孩子能够访问的站点。5PCzVD7HxA【上述信息据《家庭教育》、《中国教育报》等综合摘编】但是这些工具还有一些不足之处:①只能设定孩子能上的站点,浪费了网络上更多的资源,所谓“为了一棵树而放弃了整个森林”;2/23个人资料整理 仅限学习使用②没有对网页信息的评测功能③不能及时地了解孩子的网上行为,没有反馈的功能该系统在上述方面进行了改进和发展。第二章、系统功能及设计概述1、系统原理jLBHrnAILg通过 C#.net获取本机打开的 IE或其它浏览器的网页标题、网址 <追加方式累计文软件部分截图<图一)本),采用算法提取出高频词。一界 按照出现的高频字进 正常信息,自动行分类<按可自定义的 发高频词给指定字进行匹配) 邮箱具模现不良信息给与警告,同时对该网站的访问,自动发高频词给父母邮箱或手机(1>随系统启动方法在进系统的时候运行,首次运行修改注册表:

图软件主面2、体各个块的实HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunxHAQX74J0X使其安装后能随着 Windows操作系统的启动而启动。publicvoidstart_with_windows(>{if(start_with_win1.Checked>3/23个人资料整理仅限学习使用{start_with_win1.Checked=false。start_with_win2.Checked=false。RegistryKeyhklm=Registry.LocalMachine。RegistryKeyrun=hklm.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run",true>。LDAYtRyKfEif(run.GetValue("网络行为记录分析工具">!=null>{run.DeleteValue("网络行为记录分析工具">。}run.Close(>。hklm.Close(>。}else{RegistryKeyhklm=Registry.LocalMachine。RegistryKeyrun=hklm.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run",true>。Zzz6ZB2Ltkif(run.GetValue("网络行为记录分析工具">==null>{start_with_win1.Checked=true。start_with_win2.Checked=true。stringexeFileName=Application.ExecutablePath。//含可执行文件名dvzfvkwMI1run.SetValue("网络行为记录分析工具",exeFileName>。}else{4/23个人资料整理 仅限学习使用run.DeleteValue(" 网络行为记录分析工具 ">。start_with_win1.Checked=true 。start_with_win2.Checked=true 。stringexeFileName=Application.ExecutablePath 。//含可执行文件名 rqyn14ZNXIrun.SetValue(" 网络行为记录分析工具 ",exeFileName> 。}run.Close(> 。hklm.Close(> 。}}<2)进程保护方法A、进程的主程序隐身向系统发窗体控制消息,隐藏主程序。this.Hide(> 。B、进程保护使用进程的原子性,增加守护进程,使两个进程相互监视,一旦发现对方被杀就立刻重启对方。这样,这两个进程就很难被杀死了。EmxvxOtOcostaticvoidMain(string[]args>{while(true>{Process[]P1=Process.GetProcessesByName("cmd.exe"> 。SixE2yXPq5if(P1.Length==0>{ProcessP2=newProcess(> 。5/23个人资料整理 仅限学习使用P2.StartInfo.FileName="cmd.exe" 。P2.StartInfo.Arguments="-s" 。P2.Start(> 。}Thread.Sleep(1000> 。}}<3)获取本机打开的IE或其它浏览器的网页标题、网址,以追加方式累计成字符串集,具体实现如下:BHOBHO(BrowserHelperObject ,浏览器辅助对象,简称 BHO>BHO是微软推出的作为浏览器对第三方程序员开放交互接口的业界标准,通过简单的代码就可以进入浏览器领域的 “交互接口”(INTERACTIVEDInterface> 。通过这个接口,程序员可以编写代码获取浏览器的行为,比如 “后退”、“前进”、“当前页面”等,利用 BHO的交互特性,程序员还可以用代码控制浏览器行业,比如修改替换浏览器工具栏,添加自己的程序按钮等 (见图1>。这些在系统看来都是没有问题的。 BHO原来的目的是为了更好的帮助程序员打造个性化浏览器,以及为程序提供更简洁的交互功能,本程序就是利用 BHO的来实现。 6ewMyirQFL。BHO实例运行在浏览器的地址空间内,能对可访问的对象(如窗口、模块等等>执行任何操作,且因为它依附于浏览器的主窗口,所以其生命周期与浏览器实例的生命周期一致。图二演示了BHO的创建过程:kavU42VRUs图二BHO的创建过程6/23个人资料整理 仅限学习使用以下是开发过程。首先创建一个 C#工程,类型为ClassLibrary 。然后将Class1.cs 改名为IObjectWithSite.cs ,还要给IObjectWithSite 添加两个功能:GetSite和SetSite。PublicInterfaceIobjectwithsite{[Preservesig]IntSetsite([Marshalas(Unmanagedtype.Iunknown>]ObjectSite> 。[Preservesig]IntGetsite(RefGuidGuid,OutIntptrPpvsite> 。}y6v3ALoS89添加一个cs文件UrlTrack.cs,并且实现IObjectWithSite接口。使用BHO还需要添加两个引用SHDocVw.dll和MSHTML.dll,可以在Windows\System32目录下找到。图三M2ub6vSTnP图三SHDocVw.dllMSHTML.dll 的引用在IObjectWithSite.cs 中,还需要为我们的程序指出 IE的GUID,使得它可以挂接(attach>到IE上[ComVisible(true>,InterfaceType(ComInterfaceType.InterfaceIsIUnknown>,Guid("FC4801A3-2BA9-11CF-A229-00AA003D7352">]0YujCfmUCw另外,还需要给 BHO程序分配一个 GUID,这个可以通过 System.Guid.NewGuid(>方法得到[ComVisible(true>,Guid("e90da13b-117a-4178-8111-0f712da09ff9">,ClassInterface(ClassInterfaceType.None>]eUts8ZQVRd在UrlTrack.cs 中,我们还需要写两个方法用来 DLL注册和移除注册publicstaticstringBHOKEYNAME=@"SOFTWARE\...\BrowserHelperObjects" 。sQsAEJkW5T[ComRegisterFunction]publicstaticvoidRegisterBHO(Typetype>{RegistryKeyregistryKey=Registry.LocalMachine.OpenSubKey(BHO_KEY_NAME,7/23个人资料整理 仅限学习使用true>。if(registryKey==null>{registryKey=Registry.LocalMachine.CreateSubKey(BHO_KEY_NAME> 。}GMsIasNXkAstringguid=type.GUID.ToString("B"> 。RegistryKeybhoKey=registryKey.OpenSubKey(guid,true> 。if(bhoKey==null>{bhoKey=registryKey.CreateSubKey(guid> 。}//NoExplorer:dword=1preventstheBHOtobeloadedbyExplorer.exebhoKey.SetValue("NoExplorer",1>。bhoKey.Close(>。TIrRGchYzgregistryKey.Close(>。}[ComUnregisterFunction]publicstaticvoidUnregisterBHO(Typetype>{RegistryKeyregistryKey=Registry.LocalMachine.OpenSubKey(BHO_KEY_NAME,true>。stringguid=type.GUID.ToString("B"> 。7EqZcWLZNXif(registryKey!=null>registryKey.DeleteSubKey(guid,false> 。}lzq7IGf02E接下来就是实现具体的统计功能了。考虑一下,当输入网址后,我们需要记录下网址以及当前的时间;当在同一浏览窗口中切换网址时,不仅需要记录下网址和当前时间,还要设置前一个浏览记录的结束时间;并且在关闭浏览器时,也要记下结束时间。所以在 SetSite 中需要挂载NavigateComplete2和OnQuit事件。privatevoidNavigateComplete2(objectpDisp,refobjectURL>{stringurl=URLasstring 。if(url.IndexOf("about:blank">>=0>{return 。}if(visitHists.Count>0>{VisitHistcurrentHist=visitHists[visitHists.Count-1] 。if(currentHist.VisitUrl!=url>{currentHist.EndTime=System.DateTime.Now 。}8/23个人资料整理仅限学习使用else{return。}}VisitHistnewHist=newVisitHist(>。newHist.StartTime=System.DateTime.Now。newHist.VisitUrl=url。visitHists.Add(newHist>。}zvpgeqJ1hkprivatevoidOnQuit(>{if(visitHists.Count>0>{VisitHistcurrentHist=visitHists[visitHists.Count-1]。currentHist.EndTime=System.DateTime.Now。}NrpoJac3v1//输出统计记录...}开始编译,然后就可以在bin目录下找到工程的dll文件了。在Console中使用regasm/codebase"UrlTrack.dll"注册dll。打开注册表,在HKLM\SOFTWARE\...\BrowserHelperObject可以看到多出了一个子项{E90DA13B-117A-4178-8111-0F712DA09FF9}。1nowfTG4KI需要注意的是,需要将AssemblyInfo.cs文件中的ComVisible属性设为true,否则在注册BHO时会得到这样的信息:RegAsm:warningRA0000:Notypeswereregistered.fjnFLDa5Zo<4)采用算法提取出高频词(参照论文《无词典高频字串快速提取和统计算法研究》>●高频字串提取汉语词与词之间没有明显的分隔标记,所以,要统计高频字串首先需要将连续的字串切分开来。然而,汉语词的数量很大,想要用一部词典,收录所有的词是几乎不可能的。因此,用词典匹配难免就有遗漏。我们希望不用词典,而用文章本身的统计信息,抽取这些字串。在一篇任意文章中,除了一些段落分隔和标点符号成为词的绝对切分外标记,有一些特殊的字,它们的构词能力较弱,构成反映主题的词则更少,我们把它们称为条件切分标记。例如“们”,构成的实词只有“图们江” ,构词时最常见的是代词“我们”“他们”“它们”“她们”等 ,但这些代词基本对主题没有任何贡献。其它的如 ,“啊”“吧”“的”“很”“吗”“么”“谁”“你”“它”“他”“她”“要”“也”“又”“有”“在”等都可以看为 条件切分标记。到高频字串。tfnNhnE6e5实际代码如下:9/23个人资料整理 仅限学习使用usingSystem.IO。usingSystem.Collections 。//usehashtableusingSystem.Text.RegularExpressions 。namespaceWindowsApplication1{publicpartialclassForm1:Form{publicForm1(>{InitializeComponent(> 。}privatevoidcmdStart_Click(objectsender,EventArgse> HbmVN777sL{。 “ ”|\-|[\u4e00-\u9fa5]|[0-9]" 。 // 匹配正值表达式 逗号,点号,空格,换行符,回车符,问号,,分号,,冒号,感叹号,,左括号,又括号,双引号,左双引号,右双引号,中文字符,数字V7l4jRB8Hsstringtextstring="" 。intj 。Hashtable ht =newHashtable(>。 //创建一个Hashtable 实例83lcPA59W9//Hashtableht=newHashtable(> 。 // 创建一个 Hashtable 实例mZkklkzaaPRegexregex=newRegex(Pattern> 。 // 创建Regex实类textBox2.Text="" 。// 读取文件try10/23个人资料整理 仅限学习使用{StreamReader sr = newStreamReader(@textBox1.Text,System.Text.Encoding.GetEncoding("GB2312">> 。AVktR43bpwtextstring=sr.ReadToEnd(> 。sr.Close(> 。}catch{MessageBox.Show(" 请把test.txt 文件拷贝到C:/">。}// 根据匹配正值表达式分割字符串string[]words=regex.Split(textstring> 。// 单词加入哈希表foreach(stringwordinwords>{//textBox2.Text=textBox2.Text+" "+i 。if(word!=null&&word!="">{if(ht.Contains(word>>{j=Convert.ToInt32(ht[word]>+1 。//ht.Remove(word> 。//ht.Add(word,j> 。ht[word]=j 。}11/23个人资料整理 仅限学习使用else{ht.Add(word,1> 。}}}//// 对哈希表排序ArrayListakeys=newArrayList(ht.Keys> 。// 按字母顺序进行排序//akeys.Sort(> 。// 按字单词次数进行排序string[]keyarray=newstring[akeys.Count] 。int[]valuearray=newint[akeys.Count] 。intindex=0 。// 将key/value 分别赋给数祖foreach(stringskeyinakeys>{keyarray[index]=Convert.ToString(skey> 。valuearray[index]=Convert.ToInt32(ht[skey]> 。index++ 。}for(inta=0 。a<akeys.Count。a++>{for(intb=a+1 。b<akeys.Count 。b++>{12/23个人资料整理 仅限学习使用if(valuearray[a]>valuearray[b]>{valuearray[a]^=valuearray[b] 。valuearray[b]^=valuearray[a] 。valuearray[a]^=valuearray[b] 。stringtempstr=keyarray[a] 。keyarray[a]=keyarray[b] 。keyarray[b]=tempstr 。}}}// 显示// 按字母顺序进行排序显示//foreach(stringskeyinakeys>//{textBox2.Text=textBox2.Text+skey+"\t"+ht[skey]+"\r\n"。ORjBnOwcEd//}// 按字单词次数进行排序显示for(inta=0 。a<akeys.Count 。a++>{textBox2.Text=textBox2.Text+keyarray[a]+"\t"+valuearray[a]+"\r\n"。2MiJTy0dTT}}}13/23个人资料整理 仅限学习使用}本模块截图如图四四 词频分析统计模块截图从一般意义上来讲 ,长度较长的中文字串在意义上有较好的专指性 ,而长度较短的字串在概念上一般处于上层,即具有较广的范畴。例如 ,“计算机” ,“电子计算机”,“数字电子计算机”,这三个词的概念范畴逐渐缩小,而意义的专指性逐渐加强。由上面的算法可以知道,我们的后处理子算法趋向于得到长一点的字符串,当然,根据实际需要也可以对此稍做修改,得到趋向于短一点的字符串。gIiSpiue7A<5)事先自定义各个类别的关键字,把得到的高频字串跟其匹配,然后才分类。如果是正常信息,自动发高频词给指定邮箱,如果是不良信息,同时禁止本机上网,自动发高频词给指定邮箱。 uEh0U1Yfmh分析评价模块初步构想:分析评价采用有字典文字匹配算法实现,利用上面高频字提取模块生成的前10位高频词跟现有字典进行匹配<字典可供用户添加或删除),得到相应评价信息竟而判断上网者是否接触有害信息,是否断网,并给指定邮箱发邮件。 IAg9qLsgBX源代码见附件。禁止本机上网可采用以下方法实现:先找到“网络连接”这个虚拟文件夹,然后找到要控制的本地连接对应的 folderitem ,14/23个人资料整理 仅限学习使用然后枚举verb,找到需要的 verb后,调用verb的DoIt方法,在winxpsp2 ,C#sp6下测 试 通 过 , 代 码 如 下 :publicstaticvoidToggleWirelessConnection(> WwghWvVhPE{foreach (Shell32.FolderItemVerb verb inWirelessConnectionFolderItem.Verbs(>> asfpsfpi4k{if(verb.Name==" 启用(&A>"||verb.Name==" 禁用(&B>">ooeyYZTjj1{verb.DoIt(> 。gotoendOfForLoop 。}}endOfForLoop:System.Threading.Thread.Sleep(1000> 。}publicstaticvoidToggleLocalAreaConnection(>{foreach (Shell32.FolderItemVerb verb inLocalAreaConnectionFolderItem.Verbs(>> BkeGuInkxI{if(verb.Name==" 启用(&A>"||verb.Name==" 禁用(&B>">PgdO0sRlMo{verb.DoIt(> 。gotoendOfForLoop 。}}15/23个人资料整理 仅限学习使用endOfForLoop:System.Threading.Thread.Sleep(1000> 。}#endregion#region"Properties"privatestaticShell32.FolderControlPanelFolder{get{Shell32.Shellshell=newShell32.Shell(> 。returnshell.NameSpace(3> 。}}privatestaticShell32.FolderNetworkFolder{get{Shell32.FolderretVal=null 。foreach(Shell32.FolderItemfiinControlPanelFolder.Items(>> 3cdXwckm15{//WindowsXP 及以上需将下面的字符串改为:“网络连接”if(fi.Name==" 网络连接">{retVal=(Shell32.Folder>fi.GetFolder 。}16/23个人资料整理 仅限学习使用}if(retVal==null>{throw (new NetworkConnectionsFolderNotFoundException(>> 。h8c52WOngM}else{returnretVal 。}}}privatestaticShell32.FolderItemLocalAreaConnectionFolderItem v4bdyGious{get{Shell32.FolderItemretVal=null 。Properties.Settingsset=Properties.Settings.Default 。J0bm4qMpJ9foreach(Shell32.FolderItemfolderIteminNetworkFolder.Items(>> XVauA9grYP{Console.WriteLine(folderItem.Name> 。if(folderItem.Name==workname>{retVal=folderItem 。gotoendOfForLoop 。17/23个人资料整理 仅限学习使用}}endOfForLoop:if(retVal==null>{throw (new LocalAreaConnectionFolderItemNotFoundException(>> 。bR9C6TJscw}else{returnretVal 。}}}privatestaticShell32.FolderItemWirelessConnectionFolderItem pN9LBDdtrd{get{Shell32.FolderItemretVal=null 。Properties.Settingsset=Properties.Settings.Default 。DJ8T7nHuGTforeach(Shell32.FolderItemfolderIteminNetworkFolder.Items(>> QF81D7bvUA{Console.WriteLine(folderItem.Name> 。if(folderItem.Name==workname>{18/23个人资料整理 仅限学习使用retVal=folderItem 。gotoendOfForLoop 。}}endOfForLoop:if(retVal==null>{throw (new WirelessConnectionFolderItemNotFoundException(>> 。4B7a9QFw9h}else{returnretVal 。}}}#endregion#region"CustomExceptions"publicclassNetworkConnectionsFolderNotFoundException:Exception ix6iFA8xoX{publicoverridestringMessage{get{return "The Network Connections Folder Could Not Be Found!" 。wt6qbkCyDE19/23个人资料整理 仅限学习使用}}}publicclassLocalAreaConnectionFolderItemNotFoundException:Exception Kp5zH46zRk{publicoverridestringMessage{get{return "The Local Area Connection Folder Could Not BeFound!"。Yl4HdOAA61}}}publicclassWirelessConnectionFolderItemNotFoundException:Exception ch4PJx4BlI{publicoverridestringMessage{get{return "The Wireless Connection Folder Could Not Be Found!" 。qd3YfhxCzo}}}#endregion20/23个人资料整理 仅限学习使用}}采 用 C# 自 动 发 邮 件 具 体 实 现 如 下 :' 发 送 邮 件publicclassSendMail E836L11DO5{///<summary>///Net2.0 发送邮件///</summary>///<paramname="strSmtpServer"> 发送邮件服务器 </param>///<paramname="strFrom"> 发信人Email</param>///<paramname="strFromPass"> 发信人Email密码</param>///<paramname="strTo"> 收信人Email</param>///<paramname="strSubject"> 邮件主题</param>///<paramname="strBody"> 邮件内容</param>public static void Send(string strSmtpServer, string strFrom, string strFromPass, string strTo,stringstrSubject,stringstrBody> S42ehLvE3M{SmtpClientclient=newSmtpClient(strSmtpServer> 。client.UseDefaultCredentials=false 。client.Credentials=newSystem.Net.NetworkCredential(strFrom,strFromPass> 。501nNvZFisclient.DeliveryMethod=SmtpDeliveryMethod.Network 。jW1viftGw9Byte[]b=Encoding.Default.GetBytes(strBody> 。strBody=Encoding.GetEncoding("gb2312">.GetString(b>.ToString(> 。xS0DOYWHLPMailMessagemessage=newMail

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论