zoukankan      html  css  js  c++  java
  • 从头学习网络编程——网络编程学习笔记 :什么是HTTP与CGI?

    一直有在学习Python的网络爬虫,但是由于没有网络编程的基础,导致抓包过程及其漫长艰辛,于是痛定思痛,决定从今天开始好好学习网络编程。

    本日学习笔记内容来自:什么是http协议?//十分钟搞懂什么是CGI

    HTTP与CGI——电话线和电话机

    http协议用于客户端和服务器之间的数据传输通信,是一种通信传输规定。

    CGI则是位于服务器中的脚本文件,负责根据传输到服务器的数据执行输入/输出,因此几乎任何编程语言都能够实现CGI脚本,也正是将不同程序上线到服务器的主要方式。

    二者就想电话线和电话机的关系,在网络编程中缺一不可。

    当你点击URL时发生了什么

    注意HTTP是一种网络通信协议!什么是协议,就是一种规范和规定,不符合该规范的请求方式都是非法的,会被所有使用HTTP协议的服务器拒绝访问。

    在http的规范下,一切网络通信才有意义,因此CGI脚本的编写方法也顺从http协议。

    HTTP基本的通信规范步骤

    浏览器发起http请求:

      输入URL:

         URL的输入方式被http严格规范,无论是在地址栏输入还是点击链接访问,本质是一样的。

         http规范让我们能够以通用的方式访问几乎所有网站,比如我知道百度的URL是www.baidu.com,因此就知道博客园的地址是www.cn-blog.com而不是qqq+cn-blog+com.

      发起http请求:

        学习爬虫的人都应该懂得分析爬取网页,当我们点击F12打开控制台时,点击Network就能看到在所有请求的URL中各种的Request Header(注意访问一个网页不代表访问了一个URL,而是可能访问了

        很多URL,包括CSS文件、js文件等等)。

        而http请求包括三个部分,请求行/请求头/请求体。

        请求行包括GET和POST方式,相当于告诉服务器你要干什么,两者对应的请求行格式不同,但均为字符串样式,参考POST和GET的区别

        请求头相当于告诉服务器关于你的信息,即告诉服务器你是谁,包括Cookie、浏览器信息等,爬虫伪装常常使用构造header实现欺骗服务器从而模拟浏览器。

        请求体是POST方法所特有的(如果GET带上请求体的话会被大多数服务器忽略),相当于你想向服务器传递什么信息,常用于文本输入(比如我在写博客)、登录密码等。

      服务器处理http请求:

        首先是检查你说话说的对不对。也许听起来很好笑,但是要注意,http是严格的协议,而其规定了URL中是不能携带汉字等不符合规范的字符的。

        但是我们在百度的搜索栏、在URL的地址栏都能直接输入文字并正常访问,这是为什么呢?原因就是使用了编码,而编码准确来说是信息还未传出你的电脑时进行的(本地编码)。

        编码主要有浏览器编码和js编码,具体情况请参考URL编码的混乱局势,注意不同编码方式的实现结果不同

        其次是进入服务器进行处理,在这里我们讨论调用CGI脚本的情况。

        当调用CGI脚本时(比如使用POST提交信息或者请求下载文件时),CGI通过读取符合HTTP协议规范的字符串来知道你需要它处理什么数据,从而实现CGI脚本的输入。

        注意CGI实质上就是一个程序,输入、输出,就是这样的黑箱。

        CGI的编程规范请参考Python的CGI编程,基本对所有编程语言都是 从请求中读取数据——处理——以符合http规范的方式返回数据

        CGI处于服务器范围,能够通过对请求的信息对服务器数据进行处理(比如用户上传文件,CGI则读取并保存在服务器)并以合适方式返回处理信息(比如用户请求下载数据,CGI找到数据并返回)。

      服务器的响应请求:

        响应分为响应码/响应头/响应体

        响应码就是我们所熟悉的404和405等等,其反映了服务器响应情况,相当于服务器告诉你你的请求被处理的状态。

        响应头反映服务器的状态,包括服务器是否启用压缩、程序所用服务端的语言,还可以定义缓存情况。

        响应体就是服务器返回的信息,通常情况下都是html代码,也可以是其他代表信息的代码(json等)。

  • 相关阅读:
    高效 Java Web 开发框架 JessMA v3.2.3 正式发布
    跨平台日志清理工具 Log-Cutter v2.0.1 RC-1 发布
    跨平台日志清理工具 Log-Cutter v1.0.3 正式发布
    高性能 Windows Socket 组件 HP-Socket v2.2.3 正式发布
    7. Oracle数据加载和卸载
    6. Oracle闪回特性
    5. RAMN备份与恢复
    4. Oracle数据库用户管理备份与恢复
    3. Oracle数据库逻辑备份与恢复
    后台系统依据路由生成tabs标签页
  • 原文地址:https://www.cnblogs.com/Nortonary/p/12857348.html
Copyright © 2011-2022 走看看