一种基于PC端的网络过滤方法及客户端PC
技术领域
本发明涉及计算机技术领域,特别涉及一种基于PC端的网络过滤方法及客户端PC。
背景技术
随着互联网的迅速普及,网络内容“垃圾”已经开始侵入人们的生活,像现在互联网上大量的不良信息,已经逐渐侵袭到人们的灵魂。对互联网取其精华、去其糟粕,从而保护自己以及抵御力极差的青少年,已经引起人们的关注,因此,网络过滤技术孕育而生。
网络过滤技术采取适当的技术措施,对互联网不良信息进行过滤,既可阻止不良信息对人们的侵害,适应社会对意识形态方面的要求,同时,通过规范用户的上网行为,提高工作效率,合理利用网络资源,减少病毒对网络的侵害,这就是网络过滤技术的根本内涵。
目前,基于PC端的网络过滤方法主要有如下两种:
(1)在应用层使用HOOK技术,通过浏览器插件进行拦截过滤。这种方法实现较容易,效率高,但是容易被反HOOK,查杀、监控不全面;
(2)通过驱动层拦截。这种方法基本能够监控所以网络通信,但是开发成本高,在驱动层进行数据解析效率低,容易导致蓝屏。
发明内容
本发明的目的在于克服现有技术的不足,提出一种克服上述问题或者至少部分地解决上述问题的一种基于PC端的网络过滤方法及客户端PC,通过传输层的TDI驱动将通信的数据请求包和数据响应包转发到应用层的网络应用过滤程序,由处在应用层的网络应用过滤程序对数据包相关信息进行分析处理,因此TDI驱动只是起到一个转发作用,业务简单、实现容易,监控全面,效率高。
本发明解决其技术问题所采用的技术方案是:
一方面,一种基于PC端的网络过滤方法,所述方法应用在包括客户端PC和服务器的网络中,所述客户端PC通过互联网与所述服务器通信;所述客户端PC包括应用程序和传输层驱动接口TDI驱动;所述应用程序包括网络应用程序和网络应用过滤程序;所述方法包括:
所述TDI驱动接收应用程序向所述服务器发送的数据包,获取数据包携带的进程标识,判断所述进程标识是否为网络应用过滤程序的进程标识;
如果是,所述TDI驱动将数据包发送给所述服务器;如果不是,所述TDI驱动将数据包转发给网络应用过滤程序进行预处理,所述网络应用过滤程序将预处理后的数据包转发给所述TDI驱动;所述TDI驱动将预处理后的数据包转发给所述服务器;
所述服务器将响应数据包发送给所述TDI驱动;所述TDI驱动将所述响应数据包转发给所述网络应用过滤程序进行过滤处理,所述网络应用过滤程序将过滤处理后的响应数据包转发给所述TDI驱动,所述TDI驱动将过滤处理后的响应数据包转发给所述网络应用程序。
优选的,所述TDI驱动接收应用程序向所述服务器发送的数据包,获取数据包携带的进程标识,判断所述进程标识是否为网络应用过滤程序的进程标识步骤之前,还包括:
所述网络应用过滤程序的客户端接收控制参数设置请求,获取预处理和过滤处理的控制参数。
优选的,设置的预处理控制参数包括:是否禁用访问网络、是否禁用TCP协议传输、是否禁用UDP协议传输和HTTP协议的URL黑名单。
优选的,所述禁用网络包括全局断网和进程断网;所述禁用TCP协议传输包括全局禁用TCP和进程禁用TCP;所述禁用UDP协议传输包括全局禁用UDP和进程禁用UDP。
优选的,所述网络应用过滤程序进行预处理包括:
步骤a,判断是否设置全局断网,如果有,关闭连接请求;否则,判断是否设置进程断网,如果有,关闭连接请求,否则,执行步骤b;
步骤b,判断传输层通信协议为TCP还是UDP;如果是UDP,执行步骤c;如果为TCP,执行步骤d;
步骤c,判断是否设置全局禁用UDP,如果有设置,关闭连接请求;否则,判断是否设置进程禁用UDP,如果有设置,关闭连接请求,否则,数据包转发给所述TDI驱动;
步骤d,判断是否设置全局禁用TCP,如果有设置,关闭连接请求;否则,判断是否设置进程禁用TCP,如果有设置,关闭连接请求,否则执行步骤e;
步骤e,判断应用层通信协议是否为HTTP,如果不是,数据包转发给所述TDI驱动;如果是,执行步骤f,
步骤f,解析HTTP数据包包头,根据设置的URL黑名单,判断网址是否允许访问,如果不允许访问,返回禁止访问网页提示并关闭连接请求,否则,数据包转发给所述TDI驱动。
优选的,设置的过滤处理控制参数包括:过滤关键字、替换关键字、过滤图片和替换图片。
优选的,所述过滤处理包括:
解析数据包;查找数据包中包括的所述过滤关键字和所述过滤图片,并替代成对应的替换关键字和替换图片。
本发明一种基于PC端的网络过滤方法,当应用层有任何网络活动时,数据包通过socket往下传送,到达TDI驱动层时,TDI驱动会根据发送方的进程标识判断是否为网络应用过滤程序的进程标识,如果是则直接往下传给网络驱动接口规范NDIS驱动,再通过物理网卡发送给服务器,若发送方的进程标识不是网络应用过滤程序的进程标识则把IP数据包发往网络应用过滤程序进行预处理,从而实现断网及网址过滤等网络监控操作;当TDI驱动通过NDIS驱动接收到服务器的响应数据包时,发送给网络应用过滤程序进行关键字过滤、关键字替换、图片过滤和图片替换等操作。
依据本发明的另一个方面,提供了一种客户端PC,应用在包括客户端PC和服务器的网络中,所述客户端PC通过互联网与所述服务器通信;所述客户端PC包括应用模块和传输层驱动接口TDI驱动模块;所述应用模块包括网络应用模块和网络应用过滤模块;所述网络应用模块,用于发送请求数据包;
所述TDI驱动模块,用于接收应用模块向所述服务器发送的数据包,获取数据包携带的进程标识,判断所述进程标识是否为网络应用过滤模块的进程标识,如果是,将数据包转发给所述服务器,如果不是,将数据包转发给所述网络应用过滤模块;还用于接收服务器向所述网络应用模块发送的响应数据包;
所述网络应用过滤模块,用于对所述网络应用模块的请求数据包和对应的响应数据包进行分析处理,包括控制参数设置单元、预处理单元和过滤处理单元;
所述控制参数设置单元,用于设置是否禁用访问网络、是否禁用TCP协议传输、是否禁用UDP协议传输、HTTP协议的URL黑名单、过滤关键字、替换关键字、过滤图片和替换图片;
所述预处理单元,用于根据所述控制参数设置单元设置的参数对所述TDI驱动模块转发的请求数据包进行预处理;预处理完成后,将预处理后的数据包转发给所述TDI驱动模块;
所述过滤处理单元,用于根据所述控制参数设置单元设置的参数对所述TDI驱动模块转发的响应数据包进行过滤处理;过滤处理完成后,将过滤处理后的数据包转发给所述TDI驱动模块。
优选的,所述预处理,具体包括:
判断如果设置了全局断网或进程断网,则关闭连接请求;否则,进行传输层通信协议的判断;
判断如果传输层通信协议为UDP,进一步判断如果设置了全局禁用UDP或进程禁用UDP,则关闭连接请求;否则,将数据包转发给所述TDI驱动模块;
判断如果传输层通信协议为TCP,进一步判断如果设置了全局禁用TCP或进程禁用TCP,则关闭连接请求;否则,进一步判断应用层通信协议是否为HTTP,如果不是,将数据包转发给所述TDI驱动模块;如果是,解析HTTP数据包包头,根据设置的URL黑名单,判断网址是否允许访问,如果不允许访问,返回禁止访问网页提示并关闭连接请求,否则,将数据包转发给所述TDI驱动模块。
优选的,所述过滤处理,具体包括:
解析数据包;查找数据包中包括的所述过滤关键字和所述过滤图片,替代成对应的替换关键字和替换图片。
本发明提供的技术方案带来的有益效果是:
1、本发明的方法通过传输层的TDI驱动将通信的数据请求包和数据响应包转发到应用层的网络应用过滤程序,由处在应用层的网络应用过滤程序对数据包相关信息进行分析处理,因此TDI驱动只是起到一个转发作用,业务简单、实现容易,监控全面,效率高;
2、本发明的网络应用过滤程序易于扩展,针对各种网络协议都可以进行解析和过滤。
上述说明仅是本发明技术方案的概述,为了能够更清楚地了解本发明的技术手段,从而可依照说明书的内容予以实施,并且为了让本发明的上述和其他目的、特征和优点能够更明显易懂,以下列举本发明的具体实施方式。
根据下文结合附图对本发明具体实施例的详细描述,本领域技术人员将会更加明了本发明的上述及其他目的、优点和特征。
附图说明
图1为本发明方法实施例的流程图;
图2为本发明方法实施例的网络驱动的结构图;
图3为本发明方法实施例的请求消息的网络流程图;
图4为本发明方法实施例的响应消息的网络流程图;
图5为本发明方法实施例的网络应用过滤程序的处理流程图;
图6为本发明客户端PC实施例的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步的详细描述。
如图1所示为本发明方法实施例的流程图,如图2所示为本发明方法实施例的网络驱动的结构图,如图3所示为本发明方法实施例的请求消息的网络流程图,如图4所示为本发明方法实施例的响应消息的网络流程图。本实施例的执行主体为客户端PC 2机,如图1所示,所述方法应用在包括客户端PC 2和服务器3的网络中,所述客户端PC 2通过互联网与所述服务器3通信;所述客户端PC 2包括应用程序20和传输层驱动接口TDI驱动21;所述应用程序20包括网络应用程序201和网络应用过滤程序202(所述客户端PC 2机上安装有网络应用程序201,此外还安装有用于对网络应用程序请求数据包和对应的响应数据包进行分析处理的网络应用过滤程序202和TDI驱动21);所述方法包括:
步骤101,所述TDI驱动21接收应用程序20向所述服务器3发送的数据包,获取数据包携带的进程标识,判断所述进程标识是否为网络应用过滤程序202的进程标识;
具体的,如图2所示为本发明方法实施例的网络驱动的结构图,本发明进程标识的获取是在TDI驱动21完成的。Windows操作***网络驱动包括传输层驱动接口(TransportDriver Interface,简称TDI)驱动和网络驱动接口规范(Network Driver InterfaceSpecification,简称NDIS)NDIS驱动22,其中,NDIS又可分为NDIS协议驱动、NDIS中间层驱动和NDIS网卡驱动。NDIS协议驱动实现具体的网络协议,NDIS网卡驱动实现对物理网卡23的操作,NDIS中间层驱动位于NDIS网卡驱动程序和NDIS协议驱动程序之间,它向上提供小端口函数集,向下提供协议函数集,因此对于上层驱动程序而言,它是小端口驱动程序;对于底层的驱动,它是协议驱动程序。
步骤102,如果是,所述TDI驱动21将数据包发送给所述服务器3;如果不是,所述TDI驱动21将数据包转发给网络应用过滤程序202进行预处理,所述网络应用过滤程序202将预处理后的数据包转发给所述TDI驱动21;所述TDI驱动21将预处理后的数据包转发给所述服务器3。
具体的,如图3所示,当网络应用程序201发起网络请求时,数据包首先传输到TDI驱动21,TDI驱动21会根据数据包所属的进程标识,显然此时的进程标识不属于网络应用过滤程序202。这这样的话,所述TDI驱动21会将数据包转发给网络应用过滤程序202进行预处理,预处理完成后,网络应用过滤程序202将数据包转发给TDI驱动21,此时,TDI驱动21判断出进程标识为网络应用过滤程序202的进程标识,因此将数据包转发给NDIS驱动,NDIS驱动再通过物理网卡23将数据包发送给服务器3。
步骤103,所述TDI驱动21接收所述服务器3返回的响应数据包,并将所述响应数据包转发给所述网络应用过滤程序202进行过滤处理,所述网络应用过滤程序202将过滤处理后的响应数据包转发给所述TDI驱动21,所述TDI驱动21将过滤处理后的响应数据包转发给所述网络应用程序201。
具体的,如图4所示,所述NDIS驱动通过物理网卡23接收服务器3返回的响应数据包,并转发给所述TDI驱动21,所述TDI驱动21将数据包转发给所述网络应用过滤程序202进行过滤出来,过滤处理完成后,再将数据包转发给所述TDI驱动21,TDI驱动21再将过滤处理后的响应数据包转发给所述网络应用程序201。
进一步的,所述TDI驱动21接收应用程序20向所述服务器3发送的数据包,获取数据包携带的进程标识,判断所述进程标识是否为网络应用过滤程序202的进程标识步骤之前,还包括:
在所述网络应用过滤程序202的客户端预先设置好控制参数,包括:是否禁用访问网络(全局断网和进程断网)、是否禁用TCP协议传输(全局禁用TCP和进程禁用TCP)、是否禁用UDP协议传输(全局禁用UDP和进程禁用UDP)、设置HTTP协议的URL黑名单、设置HTTP协议内容的过滤关键字、设置是否过滤HTTP协议中的黄色图片,以及对过滤关键字进行替换的关键字和对黄色图片进行替换的普通图片。具体的,设置的预处理控制参数包括:是否禁用访问网络、是否禁用TCP协议传输、是否禁用UDP协议传输和HTTP协议的URL黑名单。设置的过滤处理控制参数包括:过滤关键字、替换关键字、过滤图片和替换图片。
进一步的,如图5所示为本发明方法实施例的网络应用过滤程序202的处理流程图,整个流程包括了预处理和过滤处理。
具体的,当网络应用过滤程序202接收到TDI驱动21转发的请求数据包时进行预处理,预处理过程包括:
步骤a,判断是否设置全局断网,如果有,关闭连接请求;否则,判断是否设置进程断网,如果有,关闭连接请求,否则,执行步骤b;
步骤b,判断传输层通信协议为TCP还是UDP;如果是UDP,执行步骤c;如果为TCP,执行步骤d;
步骤c,判断是否设置全局禁用UDP,如果有设置,关闭连接请求;否则,判断是否设置进程禁用UDP,如果有设置,关闭连接请求,否则,数据包转发给所述TDI驱动21;
步骤d,判断是否设置全局禁用TCP,如果有设置,关闭连接请求;否则,判断是否设置进程禁用TCP,如果有设置,关闭连接请求,否则执行步骤e;
步骤e,判断应用层通信协议是否为HTTP,如果不是,数据包转发给所述TDI驱动21;如果是,执行步骤f,
步骤f,解析HTTP数据包包头,根据设置的URL黑名单,判断网址是否允许访问,如果不允许访问,返回“禁止访问网页”提示并关闭连接请求,否则,数据包转发给所述TDI驱动21。
具体的,如果访问URL允许访问,则网络应用过滤程序202接收到TDI驱动21转发的服务器3端返回的网页内容数据包时,进行过滤处理,过滤处理包括:
解析数据包;查找数据包中包括的所述过滤关键字和所述过滤图片,并替代成对应的替换关键字和替换图片。
过滤处理完成后,所述网络应用过滤程序202将过滤处理后的响应数据包转发给所述TDI驱动21,所述TDI驱动21将过滤处理后的响应数据包转发给所述网络应用程序201。
图6为本发明客户端PC 2实施例的结构示意图,如图6所示,一种客户端PC 2,应用在包括客户端PC 2和服务器3的网络中,所述客户端PC 2通过互联网与所述服务器3通信;所述客户端PC 2包括应用模块60、传输层驱动接口TDI驱动模块61、NDIS驱动模块62和物理网卡模块63;所述应用模块60包括网络应用模块601和网络应用过滤模块602;具体的:
所述网络应用模块601,用于发送请求数据包;
所述TDI驱动模块61,用于接收应用模块60向所述服务器3发送的数据包,获取数据包携带的进程标识,判断所述进程标识是否为网络应用过滤模块602的进程标识,如果是,将数据包转发给所述服务器3,如果不是,将数据包转发给所述网络应用过滤模块602;还用于接收服务器3向所述网络应用模块601发送的响应数据包;
所述网络应用过滤模块602,用于对所述网络应用模块601的请求数据包和对应的响应数据包进行分析处理,包括控制参数设置单元6021、预处理单元6022和过滤处理单元6023;
所述控制参数设置单元6021,用于设置是否禁用访问网络、是否禁用TCP协议传输、是否禁用UDP协议传输、HTTP协议的URL黑名单、过滤关键字、替换关键字、过滤图片和替换关键字;
所述预处理单元6022,用于根据所述控制参数设置单元设置的参数对所述TDI驱动模块61转发的请求数据包进行预处理;预处理完成后,将预处理后的数据包转发给所述TDI驱动模块61;
所述过滤处理单元6023,用于根据所述控制参数设置单元设置的参数对所述TDI驱动模块61转发的响应数据包进行过滤处理;过滤处理完成后,将过滤处理后的数据包转发给所述TDI驱动模块61。
判断如果设置了全局断网或进程断网,则关闭连接请求;否则,进行传输层通信协议的判断;
判断如果传输层通信协议为UDP,进一步判断如果设置了全局禁用UDP或进程禁用UDP,则关闭连接请求;否则,将数据包转发给所述TDI驱动模块61;
判断如果传输层通信协议为TCP,进一步判断如果设置了全局禁用TCP或进程禁用TCP,则关闭连接请求;否则,进一步判断应用层通信协议是否为HTTP,如果不是,将数据包转发给所述TDI驱动模块61;如果是,解析HTTP数据包包头,根据设置的URL黑名单,判断网址是否允许访问,如果不允许访问,返回禁止访问网页提示并关闭连接请求,否则,将数据包转发给所述TDI驱动模块61。
优选的,所述过滤处理,具体包括:
解析数据包;查找数据包中包括的所述过滤关键字和所述过滤图片,并替代成对应的替换关键字和替换图片。
上述说明仅是本发明技术方案的概述,为了能够更清楚地了解本发明的技术手段,从而可依照说明书的内容予以实施,并且为了让本发明的上述和其他目的、特征和优点能够更明显易懂,以下列举本发明的具体实施方式。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。