美文网首页Python小哥哥Django
基于django做HTTP代理服务器

基于django做HTTP代理服务器

作者: 我爱学python | 来源:发表于2019-04-17 16:04 被阅读14次

    这个项目实现了:

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

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

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

    鱼)。

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

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

    如图

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

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

    下面是models.py的代码

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

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

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

    这张表作为缓存的实现

    views.py的代码:

    Cache.py的代码

    最后修改urls.py

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

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

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

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

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

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

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

    相关文章

      网友评论

        本文标题:基于django做HTTP代理服务器

        本文链接:https://www.haomeiwen.com/subject/aodnwqtx.html