文章目录
1.urlencode(编码) 和 urldecode(解码)
在url之中并,有一些特殊的符号,比如 / ? 等都已经被当做特殊意义理解了,因此这些字符不能够随意出现。
如果某个参数之中,需要这些特殊字符,就必须对这些特殊字符进行转义
转义规则:将需要转码的字符转为16进制,然后从有右往左,取4位(不足4位直接处理),每两位做一位,在前面加上%,编码成XY的格式
2.HTTP协议格式
2.1HTTP请求
1.首行:方法 + url(资源所在路径) + 版本 (以行为读取单位,即\n为标识)
常见的方法有GET和POST方法:
2.请求报头(header):请求的属性,冒号分割的键值对,每组属性之间使用\n分隔,遇到空行标识header部分结束
3.空行:将报头和有效载荷分离开来
4.请求正文(body):空行后面的内容都是请求正文,如果请求正文存在,则在header之中会有一个Content-Length属性来标识body的长度
2.2HTTP响应
1.首行:版本号 + 状态码(200/404) + 状态码解释(ok)
2.响应报头(header):请求的属性,冒号分割的键值对,每组属性之间使用\n分隔,遇到空行标识header部分结束
3.空行:将报头和有效载荷分离开来
3.响应正文(body):空行后面的内容都是请求正文,如果请求正文存在,则在header之中会有一个Content-Length属性来标识body的长度
3.HTTP的状态码
类别 | 原因短语 | 例子 | |
---|---|---|---|
1xx | Informational(信息性状态码) | 接受的请求正在处理中 | 请求周期比较长的 |
2xx | Success(成功状态码) | 请求正常处理完毕 | 返回状态码200,表示请求正常 |
3xx | Redirection(重定向状态码) | 需要进行附加操作以完成请求 | 登录A网址 跳转->B网站 |
4xx | Client Error (客户端错误状态码) | 服务器无法处理请求 | 400/401/403/404 客户端要的资源服务器找不到(不合理的要求) |
5xx | Server Errot(服务器错误状态码) | 服务器处理请求出错 | 比如,短时间内创建大量进程,导致服务器宕机 |
4.HTTP常见Header
常见Header | 扩展解释 |
---|---|
Content-Type:数据类型(text/html等) | 通常是response(响应)方携带 |
Content-Length:正文(Body)的长度 | request、response都有可能携带 |
Host:客户端告知服务器, 所请求的资源是在哪个主机的哪个端口上 | request携带 |
User-Agent:声明用户的操作系统和浏览器版本信息 | 识别爬虫,就是通过识别是否有Usser-Agent。用游览器访问网页是正常访问,自己写的程序就是爬虫 |
referer:当前页面是从哪个页面跳转过来的 | |
location:搭配3xx状态码使用, 告诉客户端接下来要去哪里访问 | 将状态码写入response之中,客户端接收到之后,就可以知晓跳到哪里去 |
Cookie:用于在客户端存储少量的信息,通常用于实现会话(session)功能 |
5.HTTP基本特征
1.无连接的:
http底层是基于tcp的,但是http不关心底层的实现,一旦tcp建立链接成功,不需要http再次进行链接的建立。tcp建立链接和http无关,http直接向对方直接发送 http request即可
2.无状态的:
tcp本身是有状态的,与http无关。
http并不会记录用户的任何信息,只会接受请求与响应(request <-> response),记录信息的计数为 cookie + session
3.简单快速:
短链接(一来一回就断开)进行文本(网址、图片、音频)传输
早期http/1.0版本只有短链接 http/1.1版本具有长链接
HTTP的方法
方法 | 说明 | 支持HTTP协议版本 |
---|---|---|
GET | 获取资源:从服务器获取资源(文本、网页、图片等等) | 1.0、1.1 |
POST | 传输实体主体 | 1.0、1.1 |
PUT | 传输文件(往服务器传文件,比如百度云盘) | 1.0、1.1 |
HEAD | 获得报文首部(除了正文,其余的都要) | 1.0、1.1 |
DELETE | 删除文件 | 1.0、1.1 |
OPTIONS | 询问支持方法 | 1.1 |
TRACE | 追踪路径 | 1.1 |
CONNECT | 要求用隧道协议连接代理 | 1.1 |
LINK | 建立和资源之间的联系 | 1.0 |
UNLINE | 断开连接关系 | 1.0 |
6.Cookie
6.1为什么需要cookie
http是无状态的,比如用户登录一个网址去看电影,看完一部电影之后,想接着看第二部,由于http是无状态的,这时就需要再次输入账号和密码进行登录。http这种无状态的特征会给用户造成非常差的体验感
cookie就是游览器中的一个文件,这个文件分为内存级和硬盘级(写在本地文件中,比如保存密码)
在客户端第一次访问服务器的时候,填写了账号和密码进行了登录,服务器在响应的同时会将账号和密码写入cookie之中,那么客户在下次访问的时候,cookie会自动提交,服务器自动解析cookie之中的内容,这样就不要多次填写登录信息了
6.2cookie安全问题的解决(相对解决)
cookie直接存储在本地文件之中,是很不安全的。当电脑中毒之后,盗窃人员直接粘贴cookie就可以直接得到对方的账号和密码