基于django做HTTP代理服务器

这个项目实现了:

a) 网站过滤:允许/不允许访问某些网站;

b) 用户过滤:支持/不支持某些用户访问外部网站;

c) 网站引导:将用户对某个网站的访问引导至一个模拟网站(钓

鱼)。

d) 缓存功能:要求能缓存原服务器响应的对象,并能够通过修改请求报文(添加 if-modified-since头行),向原服务器确认缓存对象是否是最新版本

首先,先要把django包内的C:\Python27\Lib\site-packages\django\core\handlers\base.py 中的^$改为.* 。(共有两处需要修改),以此来保证能让所有的url目标都传到views里面的函数中。

如图


1240

然后构建一个django项目,可以不带有admin模块,然后建立一个新的app

博主构建的项目结构如下,其中Cache.py是一会再创建的


1240

下面是models.py的代码


1240

这一部分是用来做规则的存储和缓存的存储,migrate之后各表如下所示


1240

这张表用来做禁止规则的配置,可以用'*'作为通配符,实现所有用户对单一网站和对某用户做屏蔽。


1240

这张表用来做钓鱼规则的配置,用户转到指定的目标


1240

这张表作为缓存的实现

views.py的代码:


1240

Cache.py的代码


1240

最后修改urls.py


1240

为了防止post的时候受干扰,把settings.py中的中间件去掉csrf,剩下的如图


1240

下面启动项目,监听8000端口


1240

把浏览器设置代理为127.0.0.1:8000


1240

打开博客园首页,正常显示


1240

访问人人网,由于黑名单的表中有这条规则,返回我们写的禁止页


1240

访问爱奇艺,由于钓鱼规则中配置了将爱奇艺引导到博客园,返回的是对博客园的重定向


1240

到此就完成了一个简单的HTTP代理服务器


猜你喜欢

转载自blog.51cto.com/14246112/2380409