python web渗透测试学习2Web应使用交互1HTTP基础

作者 : 开心源码 本文共3007个字,预计阅读时间需要8分钟 发布时间: 2022-05-11 共83人阅读

Web应使用交互

  • HTTP协议基础
  • HTTP请求
  • requests
  • 分析HTTP响应

HTTP协议基础

超文本传输协议(HyperText Transfer Protocol,缩写:HTTP)是一种使用于分布式、协作式和超媒体信息系统的应使用层协议。HTTP是万维网的数据通信的基础。

设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。通过HTTP或者者HTTPS协议请求的资源由统一资源标识符(Uniform Resource Identifiers,URI)来标识。

HTTP的发展是由蒂姆·伯纳斯-李于1989年在欧洲核子研究组织(CERN)所发起。HTTP的标准制定由万维网协会(World Wide Web Consortium,W3C)和互联网工程任务组(Internet Engineering Task Force,IETF)进行协调,最终发布了一系列的RFC,其中最著名的是1999年6月公布的 RFC 2616,定义了HTTP协议中现今广泛用的一个版本——HTTP 1.1。

2014年12月,互联网工程任务组(IETF)的Hypertext Transfer Protocol Bis(httpbis)工作小组将HTTP/2标准提议递交至IESG进行探讨[2],于2015年2月17日被批准。HTTP/2标准于2015年5月以RFC 7540正式发表,取代HTTP 1.1成为HTTP的实现标准。

HTTP是一个用户端终端(使用户)和服务器端(网站)请求和应答的标准(TCP)。通过用网页浏览器、网络爬虫或者者其它的工具,用户端发起HTTP请求到服务器上指定端口(默认端口为80)。我们称这个用户端为使用户代理商程序(user agent)。应答的服务器上存储着少量资源,比方HTML文件和图像。我们称这个应答服务器为源服务器(origin server。在使用户代理商和源服务器中间可能存在多个“中间层”,比方代理商服务器、网关或者者隧道(tunnel)。

虽然TCP/IP协议是互联网上最流行的应使用,HTTP协议中,并没有规定必需用它或者它支持的层。事实上,HTTP可以在任何互联网协议上,或者其余网络上实现。HTTP假定其下层协议提供可靠的传输。因而,任何能够提供这种保证的协议都可以被其用。因而也就是其在TCP/IP协议族用TCP作为其传输层。

通常,由HTTP用户端发起请求,创立到服务器指定端口(默认是80端口)的TCP连接。HTTP服务器则在那个端口监听用户端的请求。一旦收到请求,服务器会向用户端返回状态,比方”HTTP/1.1 200 OK”,以及返回的内容,如请求的文件、错误消息、或者者其它信息。

版本

超文本传输协议已经演化出了很多版本,它们中的大部分都是向下兼容的。在 RFC 2145 中形容了HTTP版本号的使用法。用户端在请求的开始告诉服务器它采使用的协议版本号,然后者则在响应中采使用相同或者者更早的协议版本。

HTTP/0.9

已过时。只接受GET一种请求方法,没有在通讯中指定版本号,且不支持请求头。因为该版本不支持POST方法,因而用户端无法向服务器传递太多信息。
HTTP/1.0

这是第一个在通讯中指定版本号的HTTP协议版本,至今仍被广泛采使用,特别是在代理商服务器中。
HTTP/1.1

持久连接被默认采使用,并能很好地配合代理商服务器工作。还支持以管道方式在同时发送多个请求,以便降低线路负载,提高传输速度。

HTTP/1.1相较于HTTP/1.0协议的区别主要表现在:

  • 缓存解决
  • 带宽优化及网络连接的用
  • 错误通知的管理
  • 消息在网络中的发送
  • 互联网地址的维护
  • 安全性及完整性

HTTP/2

当前版本,于2015年5月作为互联网标准正式发布。

HTTP是无状态的,服务器和用户端只有请求时知道对方,为此很容易发动攻击。所有的通信是明文,易受截取和篡改。

image.png

1994年引入了HTTPS以加强安全性。 HTTPS是基于SSL(Secure Socket Layer)或者TLS(Transport Layer Security)的HTTP。
HTTPS在不安全的网络上创立安全通道,免受窃听者和中间人攻击。

在HTTP中,方法指示要对所选资源执行的操作,也称为HTTP动词。 HTTP / 1.0定义了三种方法:

  • HEAD:只返回标题和状态代码而不是内容
  • GET:这是使用于检索给定URI的标准方法
  • POST:向服务器提交内容,表单数据,文件等的方法,

HTTP / 1.1引入了以下方法:

  • OPTIONS:这为目标资源提供了通信选项
  • PUT:此请求存储由给定URI标识的资源
  • DELETE:请求服务器删除Request-URI所标识的资源。
  • TRACE:回显服务器收到的请求,主要使用于测试或者诊断。
  • CONNECT:HTTP/1.1协议中预留给能够将连接改为管道方式的代理商服务器。通常使用于SSL加密服务器的链接(经由非加密的HTTP代理商服务器)。
  • PATCH:使用于将局部修改应使用到资源。

按照惯例,HEAD,GET,OPTIONS和TRACE是安全的,它们仅使用于信息检索,不应更改服务器状态。POST,PUT,DELETE和PATCH等方法则可能更改服务器状态。

可爱的python测试开发库 请在github上点赞,谢谢!
python中文库文档汇总
接口自动化性能测试线上培训大纲
python测试开发自动化测试数据分析人工智能自学每周一练
[雪峰磁针石博客]python3标准库-中文版

更多内容请关注 雪峰磁针石:简书

  • 技术支撑qq群: 144081101(后期会录制视频存在该群群文件) 591302926 567351477 钉钉免费群:21745728

  • 道家技术-手相手诊看相中医等钉钉群21734177 qq群:391441566 184175668 338228106 看手相、面相、舌相、抽签、体质识别。服务费50元每人次起。请联络钉钉或者者微信pythontesting

image.png

HTTP头的常见内容:

User-agent使用户代理商:通知服务器操作系统,浏览器和插件等信息。
Accept-encoding:浏览器支持的编码,通常是GZip或者Deflate。会压缩内容以减少每次传输的带宽时间。
Referer:它包含referer URL,一般为来源页面。
Cookie:假如浏览器有该站点的Cookie,则会将其增加到Cookie头。还有服务器端标头,由web服务器设置。
Cache-Control:缓存指令。
Location::使用于重定向。301或者302响应,服务器必需发送。
Set-Cookie:在使用户的浏览器中设置cookie。
WWW-Authenticate:请求认证。当浏览器看到此标头时,它将打开登录名窗口要求使用户名和密码。

比方访问https://www.songma.com/p/77b013a2a556的HTTP头:

image.png

$ telnet www.so.com 80Trying 125.88.193.243...Connected to so.qss-lb.com.Escape character is '^]'.GET /help/help_1_1.html HTTP/1.0HTTP/1.1 200 OKServer: openrestyDate: Mon, 16 Jul 2018 08:30:24 GMTContent-Type: text/html...

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » python web渗透测试学习2Web应使用交互1HTTP基础

发表回复