浏览器抓包

浏览器抓包

1.http报文基本的格式是什么样的(了解http报文基本格式)?
http报文主要有请求报文和响应报文。

http请求报文格式:
主要由请求行,请求头部,请求正文组成。
浏览器抓包
1.请求行
请求方法包括GET、HEAD、PUT、POST、TRACE、OPTIONS、DELETE以及扩展方法
协议版本的格式为:HTTP/主版本号.次版本号,常用的有HTTP/1.0和HTTP/1.1。
如网页http://weather.sina.com.cn/shanghai: 。浏览器抓包
2.请求头部
请求头部为请求报文添加了一些附加信息,由“名/值”对组成,每行一对,名和值之间使用冒号分隔
浏览器抓包
请求头部的最后会有一个空行,表示请求头部结束,接下来为请求正文,这一行非常重要,必不可少。
如使用Safari打开网页http://weather.sina.com.cn/shanghai其中一个请求:
浏览器抓包
3.请求正文
可选部分,比如GET请求就没有请求正文。
http响应报文格式
HTTP响应报文主要由,状态行、响应头部、响应正文,组成。
浏览器抓包

  1. 状态行
    状态代码为3位数字,200299的状态码表示成功,300399的状态码指资源重定向,400499的状态码指客户端请求出错,500599的状态码指服务端出错(HTTP/1.1向协议中引入了信息性状态码,范围为100~199)。
    浏览器抓包
    如: 。浏览器抓包
  2. 响应头部
    与请求头部类似,为响应报文添加了一些附加信息
    常见响应头部如下:
    浏览器抓包
    如Safari打开http://weather.sina.com.cn/shanghai其中一个请求:
    浏览器抓包
    这里是其中一个图片的: 浏览器抓包
  3. 打开http://weather.news.sina.com.cn找到其根据城市获取天气情况的api。
    打开http://weather.news.sina.com.cn,“网络”中请求很多,有一个“文件”里有“北京,上海,天津,武汉,沈阳,广州”字样的,
    浏览器抓包
    参数:
    浏览器抓包
    推测API为:
    http://php.weather.sina.com.cn/iframe/index/w_cl.php?code=js&day=0&city= &dfc=1&random=
    其中city后跟城市,random后跟随机数。
    响应:
    浏览器抓包
    似乎没有天气数据。
    打开“2014新版”,搜索“西安”。 http://weather.sina.com.cn/xian:

这里可以看到请求网址最后的字母是对应地区的全拼。
响应为:
浏览器抓包
推测API为:http://weather.sina.com.cn/
后跟城市全拼
4. 改变2中的api的参数进行请求,可以试使用Firefox中的Resend修改再发送。
将3题中的请求网址http://weather.sina.com.cn/xian更换为
http://weather.sina.com.cn/beijing
浏览器抓包
响应结果:
浏览器抓包
4. 了解各种http请求的方法,eg:post,get,put,delete,options。简述get和 post方法中http请求的不同。
1.GET
get方法请求指定的页面信息。?后的数据就是请求的数据,并且连接用&。在
请求参数会跟在url后面,对传参长度也有限制。由于get请求直接将参数暴露在url中,因此隐私性不好。
2.POST
post请求是向指定资源提交数据进行处理请求,例如提交表单或者上传文件等。post方法没有对传递资源的大小进行限制,往往是取决于服务器端的接受能力,而且,因为数据被包含在请求正文中(get没有请求正文)该方法传参安全性稍高些
3.PUT
PUT方法是从客户端向服务器传送的数据取代指定的文档的内容。PUT方法的本质是idempotent的方法,通过服务是否是idempotent来判断用PUT 还是 POST(POST好像可以改变数据,,,)更合理,通常情况下这两种方法并没有刻意区分,根据语义使用即可
4.DELETE
请求服务器删除指定的页面,DELETE请求一般会返回3种状态码:
• 200 (OK) - 删除成功,同时返回已经删除的资源
• 202 (Accepted) - 删除请求已经接受,但没有被立即执行(资源也许已经被转移到了待删除区域)
• 204 (No Content) - 删除请求已经被执行,但是没有返回资源(也许是请求删除不存在的资源造成的)
5.OPTIONS
允许客户端查看服务器的性能。一般来说,开发中用到该方法是用来获取服务器支持的请求类型或者查看服务器类型,来确保接下来发送的请求够安全。6.HEAD
类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头
7.CONNECT
HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器
8.TRACE
回显服务器收到的请求,主要用于测试或诊断。
GET和POST的区别:
我认为最大的区别就在于请求数据或者参数出现于请求报文的位置不同,get就在请求网址URL上,而post不会,所以post传输数据相对安全。
附一张查到的:

浏览器抓包