服务器

  • Web 服务器: 负责响应并处理 HTTP 请求,托管网站并存储静态内容,如图像,CSS,JavaScript 和 HTML 页面。常见的有 Apache,Nginx 以及微软的 IIS
  • 应用服务器: 负责为应用程序提供业务逻辑的,基于组件 API,位于以服务器为中心的架构的中间件。可以通俗理解该服务器既可以将 Python 代码进行转换为服务,又可以处理数据库数据与服务的交互
  • 数据库服务器: 负责数据分析、存储、数据处理

image.png

HTTP & HTTPS

  • HTTP 协议: 全称是 HyperText Transfer Protocol ,中文意思是超文本传输协议,是一种发布和接收 HTML 页面的方法。服务器端口号是 80 端口。
  • HTTPS 协议: 全称是 Hyper Text Transfer Protocol over SecureSocket Layer ,是 HTTP 协议的加密版本,在 HTTP 下加入了 SSL 层。服务器端口号是 443 端口。

URL 详解

URL 是 Uniform Resource Locator 的简写,统一资源定位符。用来表示互联网上某个资源的地址,互联网上的每个文件都有一个唯一的 URL ,它包含
的信息指出文件的位置以及浏览器应该怎么处理它。

  1. -- 组成部分
  2. protocol://host[:port]/path[?query-string=xxx#anchor]
  3. -- 实际场景
  4. https://www.zoomeye.org/searchResult/bugs?q=app%3A"Flask"
  • protocol: 代表的是访问的协议,一般为 http 或者 https 以及 ftp 等。
  • host: 主机名,域名 或是 IP 地址,比如 www.baidu.com。
  • port: 端口号,省略时使用方案的默认端口
  • path: 查找路径。比如: www.github.com/Kumazz/Kumazz_Secret ,后面的 /Kumazz/Kumazz_Secret 就是 path。
  • query-string: 查询字符串,比如: www.baidu.com/s?wd=kuma ,后面的 wd=kuma 就是查询字符串。用于给动态网页传递参数,可有多个参数,用「 & 」符号隔开,每个参数的名和值用 「 = 」符号隔开
  • anchor: 锚点,后台一般不用管,前端用来做页面定位的。

请求与响应

工作流程

image.png

  1. 浏览器就发送消息给该网址所在的服务器,这个过程叫做 HTTP Request。
  2. 服务器收到浏览器发送的消息后,能够根据浏览器发送消息的内容,做相应处理,然后把消息回传给浏览器。这个过程叫做 HTTP Response。

Request 详解

  • 请求方式:主要有 GET、POST 两种类型,另外还有 HEAD、PUT、DELETE、OPTIONS 等。一般情况下只从服务器获取数据下来,并不会对服务器资源产生任何影响的时候会使用 get 请求;向服务器发送数据(登录)、上传文件等,会对服务器资源产生影响的时候会使用 post 请求。

  • 请求URL:URL 全称统一资源定位符,如一个网页文档、一张图片、一个视频等都可以用 URL 唯一来确定。

  • 请求头:包含请求时的头部信息,如 User-Agent、Host、Refer、Cookies 等信息。

    • User-Agent:浏览器名称。请求一个网页的时候,服务器通过这个参数知道这个请求是由哪种浏览器发送的。如果是通过爬虫发送请求,那么User-Agent 就是 Python ,这对于那些有反爬虫机制的网站来说,可以轻易的判断你这个请求是爬虫。因此可以经常设置这个值为一些浏览器的值,来伪装爬虫。

    • Referer:表明当前这个请求是从哪个 url 过来的。这个一般也可以用来做反爬虫技术。如果不是从指定页面过来的,那么就不做相关的响应。

    • Cookies:http 协议是无状态的。也就是同一个人发送了两次请求,服务器不能判断这两个请求是否来自同一个人。因此就用 cookie 做标识。 一般如果想要做登录后才能访问的网站,那么就需要发送 cookie 信息。

  • 请求体:请求时额外携带的数据,如表单提交时的表单数据。

Response 详解

  • 响应状态:服务器反馈过来的状态,如 200 代表成功、301 永久跳转、302 临时跳转、404 找不到页面、502 服务器错误
  • 响应头:如内容类型、内容长度、服务器信息、设置 Cookie 等等。
  • 响应体:最主要的部分,包含了请求资源的内容,如网页 HTML、图片二进制数据等。