Web1.1 利用浏览器内置开发者工具进行抓包分析

引言

在很多的工作中都是需要进行抓取到网络的相关数据进行分析,来进行查看访问到服务器返回的数据是否正确,来判断是否是自己想要的数据,可以通过这些数据做相关内容测试,主要抓取的就是收发的http报文。

http报文的基本结构

通过Burp或者Chome的开发者工具可以抓取数据包在这里插入图片描述

请求报文

左边请求报文内容为

GET /weathernew/pc?query=%E9%99%95%E8%A5%BF%E8%A5%BF%E5%AE%89%E5%A4%A9%E6%B0%94&srcid=4982&city_name=%E8%A5%BF%E5%AE%89&province_name=%E9%99%95%E8%A5%BF HTTP/1.1
Host: weathernew.pae.baidu.com
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: BIDUPSID=2C80376AED4413057C59242EE6A62065; PSTM=1619581436; BDORZ=FFFB88E999055A3F8A630C64834BD6D0; BDRCVFR[VXHUG3ZuJnT]=mk3SLVN4HKm; delPer=0; PSINO=6; H_PS_PSSID=31254; Hm_lvt_3535ee208b02ecdf4b2576fd444e8473=1625404549; BA_HECTOR=2lag0k2l0g8g20a1ba1ge3dht0q; Hm_lpvt_3535ee208b02ecdf4b2576fd444e8473=1625405258; BAIDUID=B1F754119FD6DE9A8C6429EC76978304:FG=1
Connection: close

大致分为 请求头 和 请求主体两个部分

请求头中的内容依次为 请求方法GET 、请求URL 和 HTTP协议版本 HTTP/1.1

GET /weathernew/pc?query=%E9%99%95%E8%A5%BF%E8%A5%BF%E5%AE%89%E5%A4%A9%E6%B0%94&srcid=4982&city_name=%E8%A5%BF%E5%AE%89&province_name=%E9%99%95%E8%A5%BF HTTP/1.1 

报文主体主要包括

Host:接受请求的服务器地址,可以是IP:端口号,也可以是域名
User-Agent:浏览器身份标识,如Mozilla、Chrome、Safari
Accept:服务器能够发送哪些媒体类型
Accept-Encoding:服务器能够发送哪些编码方式
Accept-Language:服务器能够发送哪些语言
Cookie:客户端用它向服务器传送一个令牌,常用来验证请求者的身份

响应报文

响应报文的头部内容为

HTTP/1.1 200 OK
Cache-Control: private
Content-Length: 88707
Content-Type: text/html;charset=utf-8
Date: Sun, 04 Jul 2021 13:29:16 GMT
Expires: Sun, 04 Jul 2021 13:29:16 GMT
Server: Apache
Tracecode: 17563475360072666890070421
X-Powered-By: HHVM
Connection: close

HTTP响应报文主要由状态行、响应头部、响应正文3部分组成,响应头部主要包括:

响应头说明
Content-Type响应正文的类型(是图片还是二进制字符串)
Content-Length响应正文长度
Content-Encoding响应正文使用的数据压缩格式
Server服务器应用程序软件的名称和版本
Date服务器的响应时间

天气API

以中国天气网为例,找到网站根据城市获取天气情况的API

可以利用火狐浏览器抓包分析并修改请求重发

中国天气网

在这里插入图片描述

根据响应确定数据包,查看请求头,找出API接口地址

http://d1.weather.com.cn/sk_2d/城市ID代码.html?_=1625571791121

在这里插入图片描述

通过编辑更改城市代码(改为西安 101110101)并重新发送请求

在这里插入图片描述

在这里插入图片描述

成功获取西安地区的天气状况

常见的HTTP请求

六种常见的http请求方法
方法描述
GET发送请求来获得服务器上的资源,请求体中不会包含请求数据,请求数据放在协议头中。另外get支持快取、缓存、可保留书签等。幂等
POST和get一样很常见,向服务器提交资源让服务器处理,比如提交表单、上传文件等,可能导致建立新的资源或者对原有资源的修改。提交的资源放在请求体中。不支持快取。非幂等
HEAD本质和get一样,但是响应中没有呈现数据,而是http的头信息,主要用来检查资源或超链接的有效性或是否可以可达、检查网页是否被串改或更新,获取头信息等,特别适用在有限的速度和带宽下。
PUT和post类似,html表单不支持,发送资源与服务器,并存储在服务器指定位置,要求客户端事先知道该位置;比如post是在一个集合上(/province),而put是具体某一个资源上(/province/123)。所以put是安全的,无论请求多少次,都是在123上更改,而post可能请求几次创建了几次资源。幂等
DELETE请求服务器删除某资源。和put都具有破坏性,可能被防火墙拦截。如果是https协议,则无需担心。幂等
CONNECTHTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。就是把服务器作为跳板,去访问其他网页然后把数据返回回来,连接成功后,就可以正常的get、post了。
OPTIONS获取http服务器支持的http请求方法,允许客户端查看服务器的性能,比如ajax跨域时的预检等。
TRACE回显服务器收到的请求,主要用于测试或诊断。一般禁用,防止被恶意攻击或盗取信息。

​ GET:GET是最常见的http请求,它本质就是发送一个请求来取得服务器上的某一资源。资源通过一组HTTP头和呈现据(如HTML文本,或者图片或者视频等)返回给客户端。

​ POST:向服务器提交数据。POST方法的用途非常广泛,几乎目前所有的提交操作都是靠这个完成。

​ HEAD:HEAD和GET本质是一样的,区别在于HEAD不含有呈现数据,而仅仅是HTTP头信息。有的人可能觉得这个方法没什么用,其实不是这样的。想象一个业务情景:欲判断某个资源是否存在,我们通常使用GET,但这里用HEAD则意义更加明确。

​ PUT:这个方法比较少见。HTML表单也不支持这个。本质上来讲, PUT和POST极为相似,都是向服务器发送数据,但它们之间有一个重要区别,PUT通常指定了资源的存放位置,而POST则没有,POST的数据存放位置由服务器自己决定。

​ DELETE:删除某一个资源。基本上这个也很少见,不过还是有一些地方比如amazon的S3云服务里面就用的这个方法来删除资源。

​ OPTIONS:它用于获取当前URL所支持的方法。若请求成功,则它会在HTTP头中包含一个名为“Allow”的头,值是所支持的方法,如“GET, POST”。

get和post的区别
动作GETPOST
点击返回/刷新按钮没有影响数据会重新提交
缓存/添加书签可以不可以
历史记录没有
编码类型application/x-www-form-urlencodedapplication/x-www-form-urlencoded 或 multipart/form-data。为二进制数据使用多重编码
是否幂等幂等非幂等
长度限制http协议没有限制,但是实际浏览器或服务器有(最大2048)理论上没有,可能会收到服务器配置或内存限制
数据类型限制只能ASCII,非ascii都要编码传输没有限制,允许二进制数据
安全性数据全部展示在url中,不安全相比get,通过request body传递数据,比较安全
可见效可见不可见

​ “get”方法提交的数据会直接填充在请求报文的URL上,如“ https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1 ” “?”问号划分域名和get提交的参数,A=B中的A是参数名,B是参数值,多个参数之间用&进行分割,如果参数值是中文,则会转换成诸如%ab%12加密16进制码。一般来说,浏览器处理的URL最大限度长度为1024B(不同浏览器不一样),所以GET方法提交参数长度有限制。

​ “post”方法提交的数据会附在正文上,一般请求正文的长度是没有限制的,但表单中所能处理的长度一般为100k(不同协议不同浏览器不一样),而且需要考虑下层报文的传输效率,不推荐过长。

​ 所以GET方法可以用来传输一些可以公开的参数信息,解析也比较方便,如百度的搜索的关键词,而POST方法可以用来提交一个用户的敏感信息(如果不使用HTTPS加密,报文正文仍旧是明文,容易被人截获读取)

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值