• Django 第一天 开端


    今日内容:

    一、HTTP协议

    1.HTTP协议简介

    • 参考博客:https://www.cnblogs.com/clschao/articles/9230431.html

    • 是超文本传输协议

      • 现在使用最广泛的版本是 -- HTTP 1.1
    • 客户端发起一个http协议请求到服务端指定的端口

      • 服务端默认端口为80(浏览器上面不用填写)
      • 任何协议都可以作为传输协议
    • http协议概述:HTTP是一个客户端终端(用户)和服务器端(网站)请求和应答的标准(TCP)

    • http的请求响应

      1. 客户端链接到web服务器

      2. 发送http请求

        ​ 通过TCP套接字,客户端向Web服务器发送一个文本的请求报文,一个请求报文由请求行、请求头部、空行和请求数据4部分组成。

    2.请求方式

    • get请求
      • 格式 GET / HTTP/1.1/r/n/r/n
      • 请求的数据拼接在url后面
    • user-Agent:...
      • xx:xx #(这里放键值对)
    • post请求方法
      • post请求后面没有数据,会把数据放到请求数据里面(最后)

    3.响应格式

    HTTP/1.1 200 ok
    kl:v1
    k2:v2
    

    4.响应数据

    传送协议。
    层级URL标记符号(为[//],固定不变)

    服务器 (通常为域名,有时为IP地址)
    端口号 (以数字方式表示,若为HTTP的默认值“:80”可省略)
    路径   (以“/”字符区别路径中的每一个目录名称)  /clschao/articles/9230431.html
    查询   (GET模式的窗体参数,以“?”字符为起点,每个参数以“&”隔开,再以“=”分开参数名称与数据,通常以UTF8的URL编码,避开字符冲突的问题)
    https://www.cnblogs.com/clschao/articles/9230431.html?name=chao&age=18
    

    5.请求方法

    请求方式

    请求方式

    get post
        GET提交的数据会放在URL之后,也就是请求行里面,以?分割URL和传输数据,参数之间以&相连,如EditBook?name=test1&id=123456.(请求头里面那个content-type做的这种参数形式,后面讲) 
        POST方法是把提交的数据放在HTTP包的请求数据部分中.
        
        GET提交的数据大小有限制(因为浏览器对URL的长度有限制),而POST没有限制.
        GET与POST请求在服务端获取请求数据方式不同
    
        常用的get请求方式:
    		浏览器输入网址
    		a标签
    		form标签 method='get'
    		
    	post请求方法,一般都用来提交数据.比如用户名密码登录	
    	##其他方法:HEAD PUT DELETE TRACE OPTIONS CONNECT PATCH
    

    6.状态码

    //响应状态码    
        1xx消息——请求已被服务器接收,继续处理
        2xx成功——请求已成功被服务器接收、理解、并接受
        3xx重定向——需要后续操作才能完成这一请求
        4xx请求错误——请求含有词法错误或者无法被执行
        5xx服务器错误——服务器在处理某个正确请求时发生错误
    

    7.http协议特点

    	1.基于  请求-响应 的模式
    	2.无状态保存(不记录信息)
    	3.无连接 
    	   还有一种等待几秒,可能会继续链接,来提升效率
        
    请求:request
    响应:response
    

    二、web框架

    web框架本质

    1. 本质:浏览器发送请求,服务器接受并返回数据
    2. 框架:就是别人写好的,提供给我们使用

    简单的socket服务器

    import socket
    server = socket.socket()
    ip_port = ('127.0.0.1',8001)
    server.bind(ip_port)
    server.listen()
    while 1:
        conn,addr = server.accept()
        from_client_msg = conn.recv(1024)
        # print(from_client_msg.decode('utf-8'))
        print(from_client_msg)
        conn.send(b'HTTP/1.1 200 ok
    k1:v1
    
    ')
        		##http协议响应格式
        # conn.send(b'hello girl')
        with open('03 简单版web框架.html','rb') as f:
            data = f.read()
        conn.send(data)
        conn.close()
    

    爬虫小案例

    • 利用'User-Agent'模拟浏览器,破解反扒机制(小案例)
    import requests
    # res = requests.get('https://www.jd.com/2019')
    res = requests.get('https://dig.chouti.com/',headers={
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36',
    })
    # print(res.content)
    with open('ct.html','w',encoding='utf-8') as f:
        f.write(res.text)
    
  • 相关阅读:
    Zabbix Server 和 Zabbix Agentd 开机自动运行
    nginx+keepalive实现高可用负载均衡
    zabbix添加对web页面url的状态监控
    Zabbix当内存剩余不足10%的时候触发报警
    zabbix cpu监控介绍
    bash小结
    数据库知识入门
    MySQL简单管理
    python环境
    paramiko实现putty功能
  • 原文地址:https://www.cnblogs.com/xiaobai686/p/11987050.html
Copyright © 2020-2023  润新知