zoukankan      html  css  js  c++  java
  • 内置中间件CommonMiddleware

    django.middleware.common.CommonMiddleware:通用的中间件

    (1)如果网站在设计的时候,url带有“/”,而用户在访问的时候没有加上“/”,则这个中间件就会自动跳转至与用户访问的url相似的url。

    例如:在我们定义url的时候有:http://127.0.0.1:8000/list/ ,但是用户在访问的时候只输入了:http://127.0.0.1:8000/list ,那么CommonMiddleware会自动的做一次暂时性的重定向,状态码为301 Moved Permanently,会跳转到我们定义的url, http:/127.0.0.1:8000/list/

    (2)限制settings.DISALLOWED_USER_AGENTS中指定的请求头来访问本网站。DISALLOWED_USER_AGENT是一个正则表达式的列表。会对发送过来的请求的请求头部分进行检查,如果用户发送的请求头中的User-Agent值在settings.py文件中DISALLOWED_USER_AGENTS中,就返回给用户一个403的页面。在settings.py文件中配置DISALLOWED_USER_AGENTS,示例代码如下:
    import re
    
    DISALLOWED_USER_AGENTS = [
        re.compile(r"^$"),
        re.compile(r"^s$"),
        re.compile(r".*PhantomJS.*"),
    ]
    
    (3)在APP中创建一个python文件,运行我们的脚本访问服务器,需要注意的是,如果在环境中没有安装requests库,就需要执行pip install requests命令进行安装,示例代码如下:
    import requests
    
    <!--定义一些请求头,访问我们的服务器-->
    headers = {
        'User-Agent': 'PhantomJS'
    }
    
    resposne = request.get('http://127.0.0.1:8000', headers=headers)
    print(response.text)
    
    之后执行我们自定义的脚本,就会在控制台窗口打印出403禁止的页面。此时如果将settings.py文件中的CommonMiddleware注释,再次运行我们定义的脚本文件,就可以正常访问网页。所以这个通用的中间件的作用很明显了,可以帮助我们定义自己的反爬虫机制,所以这个一定要在项目运行的时候开启。
    始于才华,忠于颜值;每件事情在成功之前,看起来都是天方夜谭。一无所有,就是无所不能。
  • 相关阅读:
    讨论: 在WebControl中的Button,同时有onClientClick和onclick事件,验证控件实效
    在DropDownList中显示树形结构
    我的软件开场白+简单的通讯录
    DataList中动态添加控件遇到的问题
    伤心啊!不知道怎么感冒了
    存储过程实现无限级分类(2)
    上传文件类
    一个用泛型,和Sql语句分页的源代码
    在GridView中用Js实现全选
    [转]如何完美应对面试
  • 原文地址:https://www.cnblogs.com/guyan-2020/p/12354728.html
Copyright © 2011-2022 走看看