http请求

HTTP 3 代理、网关、隧道

本秂侑毒 提交于 2020-03-25 17:28:56
5. 与HTTP协作的Web服务器 一台Web服务器可搭建多个·独立域名的Web网站,也可作为通信路径上的中转服务器提升传输效率。 用单台虚拟主机实现多个域名: HTTP/1.1规范允许一台HTTP服务器搭建多个Web站点。比如,提供Web托管服务(Web Hosting Service)的供应商,可以用一台服务器为多位客户服务,也可以以每位客户持有的域名运行各自不同的网站。这是因为虚拟主机(virtual host)的功能。 即使物理层面只有一台服务器,但只要使用虚拟主机的功能,则可以假想已具有多台服务器。 客户端使用HTTP协议访问服务器时,会经常采用类似www.hackr.jp这样的主机名和域名。 在互联网上,域名通过DNS服务映射到IP地址(域名解析)之后访问目标网站,当请求发送到服务器时,已经是以IP地址形式访问了。 所以,如果一台服务器内托管了多个域名时,当收到请求时就需要搞清楚究竟要访问哪个域名。 在相同的IP地址下,由于虚拟主机可以寄存多个不同主机名和域名的Web网站,因此在发送HTTP请求时,必须在Host首部内完整指定主机名或域名的URI。 通信数据转发程序:代理、网关、隧道: 代理: 代理是一种有转发功能的应用程序,作用于服务器和客户端“中间人”的角色,接收由客户端发送的请求并转发给服务器,同时也接收服务器返回的响应并转发给客户端。 网关:

cookie和代理操作

吃可爱长大的小学妹 提交于 2020-03-25 15:36:00
一, 基于requests模块的cookie操作 引言:有些时候,我们在使用爬虫程序去爬取一些用户相关信息的数据(爬取张三“人人网”个人主页数据)时,如果使用之前requests模块常规操作时,往往达不到我们想要的目的,例如: #!/usr/bin/env python # -*- coding:utf-8 -*- import requests if __name__ == "__main__": #张三人人网个人信息页面的url url = 'http://www.renren.com/289676607/profile' #伪装UA headers={ 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36', } #发送请求,获取响应对象 response = requests.get(url=url,headers=headers) #将响应内容写入文件 with open('./renren.html','w',encoding='utf-8') as fp: fp.write(response.text) - 结果发现,写入到文件中的数据

python网络爬虫之二requests模块

蓝咒 提交于 2020-03-25 15:11:21
requests http请求库 requests是基于python内置的urllib3来编写的,它比urllib更加方便,特别是在添加headers, post请求,以及cookies的设置上,处理代理请求,用几句话就可以实现,而urllib比较繁琐, requests比urllib方便多了,requests是一个简单易用的http请求库。 官方网站是: 简单实例: import requests response = requests.get("https://www.baidu.com/") print(type(response)) print(response.status_code) print(type(response.text)) print(response.text) print(response.cookies) 这样我们就很方便的把请求的cookies获取出来了。 各种请求方式: import requests requests.get("http://httpbin.org/get") requests.post("http://httpbin.org/post") requests.put("http://httpbin.org/put") requests.delete("http://httpbin.org/delete") requests

谈谈http中get与post的区别

﹥>﹥吖頭↗ 提交于 2020-03-25 12:24:23
3 月,跳不动了?>>> Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE。URL全称是资源描述符,我们可以这样认为:一个URL地址,它用于描述一个网络上的资源,而HTTP中的GET,POST,PUT,DELETE就对应着对这个资源的查,改,增,删4个操作。到这里,大家应该有个大概的了解了,GET一般用于获取/查询资源信息,而POST一般用于更新资源信息。 1.根据HTTP规范,GET用于信息获取,而且应该是安全的和幂等的。 (1).所谓安全的意味着该操作用于获取信息而非修改信息。换句话说,GET 请求一般不应产生副作用。就是说,它仅仅是获取资源信息,就像数据库查询一样,不会修改,增加数据,不会影响资源的状态。 * 注意:这里安全的含义仅仅是指是非修改信息。 (2).幂等的意味着对同一URL的多个请求应该返回同样的结果。这里我再解释一下幂等这个概念: 幂等(idempotent、idempotence)是一个数学或计算机学概念,常见于抽象代数中。 幂等有一下几种定义: 对于单目运算,如果一个运算对于在范围内的所有的一个数多次进行该运算所得的结果和进行一次该运算所得的结果是一样的,那么我们就称该运算是幂等的。比如绝对值运算就是一个例子,在实数集中,有abs(a)=abs(abs(a))。 对于双目运算

post 和get

时光怂恿深爱的人放手 提交于 2020-03-25 11:57:44
3 月,跳不动了?>>>  Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE。URL全称是资源描述符,我们可以这样认为:一个URL地址,它用于描述一个网络上的资源,而HTTP中的GET,POST,PUT,DELETE就对应着对这个资源的查,改,增,删4个操作。到这里,大家应该有个大概的了解了,GET一般用于获取/查询资源信息,而POST一般用于更新资源信息。    1 .根据HTTP规范,GET用于信息获取,而且应该是安全的和幂等的。   (1).所谓安全的意味着该操作用于获取信息而非修改信息。换句话说,GET 请求一般不应产生副作用。就是说,它仅仅是获取资源信息,就像数据库查询一样,不会修改,增加数据,不会影响资源的状态。   * 注意:这里安全的含义仅仅是指是非修改信息。   (2).幂等的意味着对同一URL的多个请求应该返回同样的结果。这里我再解释一下 幂等 这个概念:    幂等 (idempotent、idempotence)是一个数学或计算机学概念,常见于抽象代数中。   幂等有一下几种定义:   对于单目运算,如果一个运算对于在范围内的所有的一个数多次进行该运算所得的结果和进行一次该运算所得的结果是一样的,那么我们就称该运算是幂等的。比如绝对值运算就是一个例子,在实数集中,有abs(a)=abs(abs(a))。

web应用/http协议/web框架

我怕爱的太早我们不能终老 提交于 2020-03-25 08:24:56
一、web应用 Web应用程序是一种可以通过Web访问的应用程序,程序的最大好处是用户很容易访问应用程序,用户只需要有浏览器即可,不需要再安装其他软件。 应用程序有两种模式C/S、B/S。C/S是客户端/服务器端程序,也就是说这类程序一般独立运行。而B/S就是浏览器端/服务器端应用程序, 这类应用程序一般借助谷歌,火狐等浏览器来运行。WEB应用程序一般是B/S模式。Web应用程序首先是“应用程序”,和用标准的程序语言, 如java,python等编写出来的程序没有什么本质上的不同。在网络编程的意义下,浏览器是一个socket客户端,服务器是一个socket服务端 1.一个简单的web请求过程: 1 # -*- coding:utf-8 -*- 2 3 4 import socket 5 6 sock = socket.socket() 7 sock.bind(('127.0.0.1',8800)) 8 sock.listen(5) 9 10 # get请求 11 12 while True: 13 print('server waiting......') 14 conn,addr = sock.accept() 15 data = conn.recv(1024) 16 print("data:",data) 17 # conn.send(b"hello mm.") # 格式错误

web应用/http协议/web框架

早过忘川 提交于 2020-03-25 07:06:18
一、web应用 Web应用程序是一种可以通过Web访问的应用程序,程序的最大好处是用户很容易访问应用程序,用户只需要有浏览器即可,不需要再安装其他软件。 应用程序有两种模式C/S、B/S。C/S是客户端/服务器端程序,也就是说这类程序一般独立运行。而B/S就是浏览器端/服务器端应用程序, 这类应用程序一般借助谷歌,火狐等浏览器来运行。WEB应用程序一般是B/S模式。Web应用程序首先是“应用程序”,和用标准的程序语言, 如java,python等编写出来的程序没有什么本质上的不同。在网络编程的意义下,浏览器是一个socket客户端,服务器是一个socket服务端 import socket def handle_request(client): request_data = client.recv(1024) print("request_data: ",request_data) client.send("HTTP/1.1 200 OK\r\n\r\n".encode("utf8")) client.send("<h1 style='color:red'>Hello, 路飞学城! </h1>".encode("utf8")) def main(): sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.bind

Web 开发规范 — WSGI

眉间皱痕 提交于 2020-03-24 23:17:04
目录 目录 WSGI 简介 为什么需要 WSGI 这个规范 WSGI 如何工作 WSGI的角色 Server 如何调用 Application application 的两个参数 application 对象的返回值 再谈Server如何调用application WSGI 中间件 WSGI的实现和部署 参考资料 WSGI 简介 WSGI(Web Server Gateway Interface) Web 服务器网关接口。 从名称上来看WSGI就是一个网关,作用就是在协议之间进行转换。具体而言,WSGI 是一个规范,它遵循这种规范将一个Web组件抽象成三个部件层: Web Server + Web Middleware + Web Application 。除此之外,它还定义了 Web Server 如何与 Python 写的 Web Application进行交互,使得 Python 写的 Web Application 可以和 Web Server 能够对接起来。现在一般会使用 Apache + wsgi_mod 的组合来实现Web Services。 为什么需要 WSGI 这个规范? 在 Web Services 处理方案中,有一个方案是目前应用最广泛的: - 部署一个 Web Server(Apache) 专门用来处理 HTTP 协议层面相关的事情,EG. 如何在一个

HTTP是怎样工作的

北战南征 提交于 2020-03-24 08:59:48
一次HTTP操作称为一个事务,其工作过程可分为四步:   首先客户机与服务器需要建立连接。只要单击某个超级链接,HTTP的工作就开始了。   建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的内容。   服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。   客户端接收服务器所返回的信息通过浏览器显示在用户的显示屏上,然后客户机与服务器断开连接。   如果在以上过程中的某一步出现错误,那么产生错误的信息将返回到客户端,有显示屏输出。对于用户来说,这些过程是由HTTP自己完成的,用户只要用鼠标点击,等待信息显示就可以了。   许多HTTP通讯是由一个用户代理初始化的并且包括一个申请在源服务器上资源的请求。最简单的情况可能是在用户代理和服务器之间通过一个单独的连接来完成。在Internet上,HTTP通讯通常发生在TCP/IP连接之上。缺省端口是TCP 80,但其它的端口也是可用的。但这并不预示着HTTP协议在Internet或其它网络的其它协议之上才能完成。HTTP只预示着一个可靠的传输。   这个过程就好像我们打电话订货一样,我们可以打电话给商家,告诉他我们需要什么规格的商品

服务器错误数字(代码)对照表

一曲冷凌霜 提交于 2020-03-24 07:25:27
3 月,跳不动了?>>> 400 错误请求 — 请求中有语法问题,或不能满足请求。 404 找不到 — 服务器找不到给定的资源;文件不存在 500 内部错误 — 因为意外情况,服务器不能完成请求 或者出问题了 2xx 成功 200 正常;请求已完成。 201 正常;紧接 POST 命令。 202 正常;已接受用于处理,但处理尚未完成。 203 正常;部分信息 — 返回的信息只是一部分。 204 正常;无响应 — 已接收请求,但不存在要回送的信息。 3xx 重定向 301 已移动 — 请求的数据具有新的位置且更改是永久的。 302 已找到 — 请求的数据临时具有不同 URI。 303 请参阅其它 — 可在另一 URI 下找到对请求的响应,且应使用 GET 方法检索此响应。 304 未修改 — 未按预期修改文档。 305 使用代理 — 必须通过位置字段中提供的代理来访问请求的资源。 306 未使用 — 不再使用;保留此代码以便将来使用。 4xx 客户机中出现的错误 400 错误请求 — 请求中有语法问题,或不能满足请求。 401 未授权 — 未授权客户机访问数据。 402 需要付款 — 表示计费系统已有效。 403 禁止 — 即使有授权也不需要访问。 404 找不到 — 服务器找不到给定的资源;文档不存在。 407 代理认证请求 — 客户机首先必须使用代理认证自身。 415