一、url过滤简介
针对企业对员工上网行为的控制管理,可以采用URL过滤技术。如企业不允许研发员工在上班时间访问娱乐网站,在下班时间则允许;或者企业不允许市场人员访问研发内部网站等等。这些基于不同的用户组、不同的时间段,访问的网页有区别的问题,可以采用URL过滤技术实现。
URL过滤功能可以归纳为3大类:
黑白名单功能:如把钓鱼网站、黄色网站......列入黑名单,可以保护公司内网的安全;而把一些畅通无阻的网页加入白名单,就不需要进行分类查询,提高了访问速度。
分类访问功能:对于黑白名单无法匹配的网页,采取分类查询的功能。分类可以用户自己配置,也可以向第三方的分类查询服务器进行查询,如surfcontrol的分类服务器;与第三方服务器的通信是技术难点,是TCP连接还是UDP连接,若是TCP连接,在web访问高峰期,要建多少TCP连接,是不是会超过设备负载,性能是不是会受影响,查询速度是不是会很慢;若是UDP连接,怎么处理链路拥塞情况下查询报文丢失的情况,查询超时怎么处理?总而言之,查询到分类后,可以与本地的用户组和时间段关联,判断该http请求是否该放行。
页面推送:若是被阻断的页面,需要对用户进行通知,可以采用页面推送的方式。此时,需要对发起http请求的用户推送一个页面,知道客户,访问被阻断,并且断开http请求。这里的技术难点是,如何模拟http server,给client发送一个 reset报文,并重新构造一个报文发送给客户端。涉及到报文封装,校验和计算,序列号修改。
如何从http中提取URL呢?我们知道http get请求的格式:
GET /new/tb_02.gif HTTP/1.1
Accept: */*
Referer:http://www.360doc.com/content/09/1209/10/556933_10698354.shtml
Accept-Language: zh-cn
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; CIBA)
Host: pubimage.360doc.com
Connection: Keep-Alive
我们把 host 部分提取出来,进行 URL 过滤,过滤的时候,用什么匹配方式?可以考虑 MPSE 算法,即把要匹配的模式串先预编译成状态机,对string进行一次扫描时,进行状态跳转,因此一次扫描,就能找出所以字符串。时间复杂度为0(n);
对于一个网页中的N多资源,可以根据资源类型判断,是否需要对该 HOST 进行过滤,减少重复工作。
在该特性开发过程中,碰到的问题有:
1、易用性:web页面整改:按主功能划主页面,主页面里放子功能;匹配方式整改,分为prefix, surfix, exact, obscuring;分类页面区分自定义和预定义;category, user, address,action 的配置;默认IP地址;
2、功能问题:分类查询的返回报文;页面推送中RST报文重传;
如何测出这些问题:
1、易用性:按功能模块来设计页面;
2、功能问题:多任务交互时,考虑资源修改的情况;交互复杂的地方容易出现问题;
二、url过滤技术实现
目的,避免爬虫在网络中爬行的时候遇到环,所以我们可以将爬虫爬过的网页存储下来。
储存-查找技术:
a、将访问过的url保存到数据库
数据量大后效率特别低,来一个url启动一次数据库有点大材小用
b、用HashSet将访问过的URL保存起来,只需接近O(1)的代价就可以查到一个URL是否被访问过
太消耗内存了,1亿个URL。每个URL50bit,占5G内存。
c、URL经过MD5或SHA-1等单向哈希后再保存到HashSet或数据库。
字符串经MD5处理后信息摘要只有128bit,SHA-1处理后只要160bit,所以这种方法比上面一种方法节约了好几倍的内存。
d、Bit-Map方法。建立一个BitSet,将每个URL经过一个哈希函数映射到某一位。其实也就是布隆过滤器。
在大数据处理方面,时间和空间都算是最优的
三、路由器实现url过滤
URL过滤就是禁止所有发送到某个地址或则从某个地址发过来的数据包;
URL:统一资源定位符(URL,英语 Uniform /Universal Resource Locator 的缩写)也被称为网页地址,是因特网上标准的资源的地址(Address)。路由器设置方法如下:
1、在浏览器地址栏输入192.168.0.1登陆路由器界面,点击首页“高级设置”进入管理界面。
2、登陆路由器管理界面,点击“安全设置”―“URL过滤”,“启用”URL过滤,选择过滤模式“仅禁止”/“仅允许”,IP地址填入局域网中被控制的计算机的IP地址,填写“URL字符串”-“启用”-“保存”。