文章目录
- 本章重点
- HTTP协议
- HTTP协议报格式
- Fiddler抓包
- 请求
- 响应
- HTTP方法
本章重点
- 初步认识
HTTP
协议 - 学习
Fiddler
抓包流程 - 掌握
GET
和POT
方法的异同!
HTTP协议
我们网络编程已经了解了很多协议类型了!
有传输层中的TCP/UDP
,网络层中的IP
协议.我们知道身为程序员的我们重点是反正应用层协议的设计上,其他网络层中的协议属于操作系统内核!
我们知道我们程序员主要在应用层设计应用层协议!
应用层协议由包括两部分,确定传输的数据和协议模板(xml/json/Protobuff
)的选择!
我们知道,不同水平的程序员设计的应用层协议各有参差!
有大佬就设计出了业界比较好的协议,供大家使用!
HTTP
协议是目前业界使用最多的协议!所以我们重点来学习HTTP
协议,通过对HTTP
协议的学习,从而自己可以借助HTTP
协议在项目中设计应用层协议!
我们知道应用层协议在网络传输的关键作用就是,让通信双方可以理解双方的信息,就好比你买一个电子产品,卖家会提供一个使用说明书,这里的应用层协议也就相当于使用说明书!
HTTP协议报格式
我们通过之前网络协议的学习知道,学习一个协议就是学习这个协议的报头格式!
看到这个协议格式发现和我们之前学习的协议报头格式大为不同!
主要是因为之前学习的
TCP/IP
协议都是面向二进制设计的协议类型!
而HTTP
协议主要是由文本格式的协议,比之前的协议格式利于我们学习和理解!
Fiddler抓包
我们HTTP
协议格式的学习先通过引入一个app来学习!
Fiddler
抓包工具
什么是抓包工具呢?
我们知道数据在网络传输中,会经过很多设备,我们的信息虽然通过这些协议进行了分装!当时这些设备还是有这些信息的记录!
这里的抓包工具就相当于一个代理,就好比一个传话的,虽然Fiddler
并不需要这个信息,当时信息经过了这个抓包工具,就可以将传输中的应用层协议报拿到,也就是拿到了HTTP
协议包,这就是抓包!其实其他协议也能通过其他的的抓包工具,进行抓包!
我们先通过这个抓包工具的使用,获取几个HTTP
数据协议,然后对HTTP
协议有所了解,然后再进行协议格式的学习!
Fiddler安装
我们通过官网下载安装这个Fiddler Classic
经典版本!
Fiddler下载地址
然后安装后就可以使用了!
打开界面后就是这个样子!
然后我们要先进行设置!
我们将这里的HTTPS
中的所有选项勾选上,然后就可以进行使用了!
啥是HTTPS呢?
我们暂且理解为
HTTP
的升级版,在HTTP
的基础上进行了加密,保证了数据传输的安全!详细内容后面我们还会介绍到!
这个界面有两栏,左边这栏就是我们抓包抓取的数据!
当我们浏览器访问一个页面或者程序中,进行跳转都可能会有HTTP
协议数据请求,然后Fiddler
抓包工具就可以抓取到数据报!
还有就是浏览器中的一次网页请求可能,传输了多个HTTP
协议数据包,所以这里的抓取的报一直在增加!
当我们双击抓取到的一个HTTP
协议数据报后,右边栏就会出现这个协议报的详细内容!
这里上方就是这个HTTPS
协议数据报的请求信息,下方就是HTTPS
的响应信息!
我们通过对这里的请求和响应的学习就可以大致了解到HTTPS
协议格式!
请求:
我们选中Raw
这一选项就可以查看最原始的HTTP
协议请求!
然后我们发现这么小的字体咋看啊这是,我们可以通过下方的VIew in Notepad
通过记事本查看这里的请求数据!
GET https://www.csdn.net/ HTTP/1.1
Host: www.csdn.net
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Cookie: uuid_tt_dd=10_30601611580-1653459529558-297725; log_Id_pv=602; Hm_lvt_6bcd52f51e9b3dce32bec4a3997715ac=1655126066,1655128987,1655170391,1655182762; Hm_up_6bcd52f51e9b3dce32bec4a3997715ac=%7B%22islogin%22%3A%7B%22value%22%3A%221%22%2C%22scope%22%3A1%7D%2C%22isonline%22%3A%7B%22value%22%3A%221%22%2C%22scope%22%3A1%7D%2C%22isvip%22%3A%7B%22value%22%3A%220%22%2C%22scope%22%3A1%7D%2C%22uid_%22%3A%7B%22value%22%3A%22weixin_52345071%22%2C%22scope%22%3A1%7D%7D; Hm_ct_6bcd52f51e9b3dce32bec4a3997715ac=6525*1*10_30601611580-1653459529558-297725!5744*1*weixin_52345071; log_Id_view=1172; __51uvsct__JQTDiOVZ2pRjGa1K=41; __51vcke__JQTDiOVZ2pRjGa1K=1e84abb9-62df-5ecc-828b-e3052ffe5150; __51vuft__JQTDiOVZ2pRjGa1K=1653459532473; log_Id_click=801; __gads=ID=f159decf46255d5e-22bbe38364d300d7:T=1653459564:RT=1653459564:S=ALNI_Ma5D0b1QWC6YQ8t-on_R6zAurFD0g; __gpi=UID=000005b633162c48:T=1653459564:RT=1655010298:S=ALNI_Mbd0__O7WINiqjmFo0HJe78mx_xOA; ssxmod_itna=eqUxBDcDu0D=34Bake5DkF6diKbMk00fOexGXhIYDZDiqAPGhDC34UeDIYGCYRRrBe+C3jjBRoqH8m4WT4YKC4I0frQ4B3DEx0=PCjeKiinDCeDIDWeDiDGR7D=xGYDj0KGWD4qDOD3qGyS+=Di8t9DdvC7uQDmTNDGup6D7QDIw6g9frVAeDSW7UxKG=DjubD/4xWHeRWH=5DbgeuDeiDtqD9lw=Dbfd3x0pymkU7wGwIbt4US+NDxBtQExDf7kGC4t5D9h6IOfkD0wEY9xpxWiez8AYRgY5NBietW7ePBg+Ci0Dz4+Dd35DuxDG4ka75qiDD==; ssxmod_itna2=eqUxBDcDu0D=34Bake5DkF6diKbMk00f2DA=uxPtD/K3KDFODxDIg8qqFGFB+oQwiXsYI1EvQw7bKMRj1/+6eoNOKGbng2INO81fi6zL/uMizdaYIy8Dg0Z9bnV80FIZXBPsk1hIg=n=R0n=VW7Q5+IQ3RbsCx9C=gvG2m5bN/y=qFOwqKyQG8v4=B7AYSO+lPqpUC3bRn8IazEFbzT6GgctB3SfmO8GDUSh7RSf/OQhrPdAPk8fRzjITkCRxdKw+OHwVQYb/oIrCR+yC6KgAucT6oFi6ueM/6w10qzQbZHZ68tTRmVimrsWGL+aE/ri7Rh/FgIrLm2OQPhfmmDuuDqhW914PEnRcQnKuAEKeuzPnFpYxqg0ATFWQmwx82Ie+oD07cGPD7=DYF=eD===; UserName=weixin_52345071; UserInfo=26ede6cf39e94eab9c6265a032aa59fa; UserToken=26ede6cf39e94eab9c6265a032aa59fa; UserNick=bug+%E9%83%AD; AU=5FF; UN=weixin_52345071; BT=1653462761522; p_uid=U010000; c_dl_prid=1653464404138_679702; c_dl_rid=1654675272560_674132; c_dl_fref=https://blog.csdn.net/m0_59140023/article/details/125097573; c_dl_fpage=/download/phx320/10246827; c_dl_um=distribute.pc_search_result.none-task-blog-2%7Eall%7Esobaiduend%7Edefault-3-107703400-null-null.142%5Ev11%5Epc_search_result_control_group%2C157%5Ev13%5Econtrol; management_ques=1653738813836; c_hasSub=true; has-vote-msg=1; c_utm_source=yh-grzx; is_advert=1; historyList-new=%5B%22pv%E4%BF%A1%E5%8F%B7%E9%87%8F%20%E4%BA%92%E6%96%A5%E5%92%8C%E5%90%8C%E6%AD%A5%22%5D; dc_tos=rdgbqv; csrfToken=aUhBDEajAeAqoPzfwJMb1Ltp; c_pref=https%3A//www.csdn.net/; c_ref=https%3A//mp.csdn.net/; c_first_ref=default; c_first_page=https%3A//www.csdn.net/; c_segment=13; Hm_lpvt_6bcd52f51e9b3dce32bec4a3997715ac=1655183480; dc_sid=d52c56b02a4a765ee9dfb3c18ed3278a; __vtins__JQTDiOVZ2pRjGa1K=%7B%22sid%22%3A%20%228e835648-5d35-50bb-af41-f2e30674a4ac%22%2C%20%22vd%22%3A%203%2C%20%22stt%22%3A%20711754%2C%20%22dr%22%3A%20657883%2C%20%22expires%22%3A%201655185276045%2C%20%22ct%22%3A%201655183476045%7D; c_page_id=default; dc_session_id=10_1655185306768.999185
Upgrade-Insecure-Requests: 1
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: none
Sec-Fetch-User: ?1
这就是我们抓取的这个报的数据请求!
响应:
而下方就是对于这个请求,服务器所给出的响应信息!
我们响应也是通过Raw
选项查看原始的HTTP
响应!然后通过记事本打开!
HTTP/1.1 200 OK
Server: openresty
Date: Tue, 14 Jun 2022 05:55:19 GMT
Content-Type: text/html; charset=utf-8
Connection: keep-alive
Keep-Alive: timeout=20
Vary: Accept-Encoding
X-Response-Time: 356
x-xss-protection: 1; mode=block
x-content-type-options: nosniff
x-download-options: noopen
x-readtime: 356
Strict-Transport-Security: max-age=31536000
Content-Length: 529163
<html lang="zh" data-server-rendered="true"><head><title>CSDN - 专业开发者社区</title> <meta name="keywords" content="CSDN博客,CSDN学院,CSDN论坛,CSDN直播"> <meta name="description" content="CSDN是全球知名中文IT技术交流平台,创建于1999年,包含原创博客、精品问答、职业培训、技术论坛、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区."> <meta http-equiv="content-type" content="text/html;charset=utf-8"> <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, minimal-ui"> <meta name="referrer" content="always">
<script src="https://g.csdnimg.cn/tingyun/tingyun.js"></script>
<link rel="shortcut icon" href="https://g.csdnimg.cn/static/logo/favicon32.ico" type="image/x-icon"> <link rel="canonical" href="https://www.csdn.net">
<script src="https://g.csdnimg.cn/??lib/jquery/1.12.4/jquery.min.js,user-tooltip/2.2/user-tooltip.js,lib/qrcode/1.0.0/qrcode.min.js"></script> <script src='//g.csdnimg.cn/common/csdn-report/report.js' type='text/javascript'></script>
<script src="https://g.csdnimg.cn/user-ordercart/2.0.1/user-ordercart.js?ts=2.0.1"></script>
<script src="https://g.csdnimg.cn/common/csdn-login-box/csdn-login-box.js"></script>
<script src="https://g.csdnimg.cn/user-ordertip/3.0.2/user-ordertip.js?t=3.0.2"></script>
<script>
window.TINGYUN && window.TINGYUN.init && window.TINGYUN.init(function (ty_rum) {
ty_rum.server = { "event_timeout": 60000, "dr_threshold": 4000, "opt_custom_param_rule": [], "cross_page_delay": 3000, "router_enable": true, "fp_threshold": 2000, "token": "568934913a6343de840a781ca5eaba4b", "beacon": "wkbrs1.tingyun.com", "trace_threshold": 7000, "x_server_switch": true, "ignore_err": false, "id": "hWg-u0rE5b8", "key": "Z1Tu5hoKbGw", "fs_threshold": 4000 };
});
</script>
<script src="https://g.csdnimg.cn/common/csdn-toolbar/csdn-toolbar.js"></script>
<link rel="stylesheet" href="https://csdnimg.cn/release/cmsfe/public/css/common.db505e6b.css"><link rel="stylesheet" href="https://csdnimg.cn/release/cmsfe/public/css/tpl/www-index-new/index.164507a0.css"></head> <body><div id="toolbarBox" style="min-height: 48px;"></div> <div id="app"><div><div class="main"><div class="page-container page-component"><div><div class="home_wrap"><div class="content_wrap"><div id="floor-nav_557" floor-index="0"><div comp-data="[object Object]" floor-data="[object Object]" class="blog-nav-tag" data-v-f8e9e086><div class="blog-nav " data-v-f8e9e086><img src="https://img-home.csdnimg.cn/images/20220107105619.png" alt class="blog-nav-down " data-v-f8e9e086> <div class="blog-nav-box" data-v-f8e9e086><ul class="def" data-v-f8e9e086> <li class="navigation-right " data-v-f8e9e086><a href="https://blog.csdn.net/nav/back-end" data-report-click="{"spm":"1001.2100.3001.7366","extend1":"back-end"}" data-report-view="{"spm":"1001.2100.3001.7366","extend1":"back-end"}" data-v-f8e9e086>后端</a></li><li class="navigation-right " data-v-f8e9e086><a href="https://blog.csdn.net/nav/web" data-report-click="{"spm":"1001.2100.3001.7366","extend1":"web"}" data-report-view="{"spm":"1001.2100.3001.7366","extend1":"web"}" data-v-f8e9e086>前端</a></li><li class="navigation-right " data-v-f8e9e086><a href="https://blog.csdn.net/nav/mobile" data-report-click="{"spm":"1001.2100.3001.7366","extend1":"mobile"}" data-report-view="{"spm":"1001.2100.3001.7366","extend1":"mobile"}" data-v-f8e9e086>移动开发</a></li><li class="navigation-right " data-v-f8e9e086><a href="https://blog.csdn.net/nav/lang" data-report-click="{"spm":"1001.2100.3001.7366","extend1":"lang"}" data-report-view="{"spm":"1001.2100.3001.7366","extend1":"lang"}" data-v-f8e9e086>编程语言</a></li><li class="navigation-right " data-v-f8e9e086><a href="https://blog.csdn.net/nav/java" data-report-click="{"spm":"1001.2100.3001.7366","extend1":"java"}" data-report-view="{"spm":"1001.2100.3001.7366","extend1":"java"}" data-v-f8e9e086>Java</a></li><li class="navigation-right " data-v-f8e9e086><a href="https://blog.csdn.net/nav/python" data-report-click="{"spm":"1001.2100.3001.7366","extend1":"python"}" data-report-view="{"spm":"1001.2100.3001.7366","extend1":"python"}" data-v-f8e9e086>Python</a></li><li class="navigation-right " data-v-f8e9e086><a href="https://blog.csdn.net/nav/ai" data-report-click="{"spm":"1001.2100.3001.7366","extend1":"ai"}" data-report-view="{"spm":"1001.2100.3001.7366","extend1":"ai"}" data-v-f8e9e086>人工智能</a></li><li class="navigation-right " data-v-f8e9e086><a href="https://blog.csdn.net/nav/big-data" data-report-click="{"spm":"1001.2100.3001.7366","extend1":"big-data"}" data-report-view="{"spm":"1001.2100.3001.7366","extend1":"big-data"}" data-v-f8e9e086>大数据</a></li><li class="navigation-right " data-v-f8e9e086><a href="https://blog.csdn.net/nav/algo" data-report-click="{"spm":"1001.2100.3001.7366","extend1":"algo"}" data-report-view="{"spm":"1001.2100.3001.7366","extend1":"algo"}" data-v-f8e9e086>数据结构与算法</a></li><li class="navigation-right " data-v-f8e9e086><a href="https://blog.csdn.net/nav/avi" data-report-click="{"spm":"1001.2100.3001.7366","extend1":"avi"}" data-report-view="{"spm":"1001.2100.3001.7366","extend1":"avi"}" data-v-f8e9e086>音视频</a></li><li class="navigation-right " data-v-f8e9e086><a href="https://blog.csdn.net/nav/cloud-native" data-report-click="{"spm":"1001.2100.3001.7366","extend1":"cloud-native"}" data-report-view="{"spm":"1001.2100.3001.7366","extend1":"cloud-native"}" data-v-f8e9e086>云原生</a></li><li class="navigation-right " data-v-f8e9e086><a href="https://blog.csdn.net/nav/cloud" data-report-click="{"spm":"1001.2100.3001.7366","extend1":"cloud"}" data-report-view="{"spm":"1001.2100.3001.7366","extend1":"cloud"}" data-v-f8e9e086>云平台</a></li><li class="navigation-right " data-v-f8e9e086><a href="https://blog.csdn.net/nav/ops" data-report-click="{"spm":"1001.2100.3001.7366","extend1":"ops"}" data-report-view="{"spm":"1001.2100.3001.7366","extend1":"ops"}" data-v-f8e9e086>运维</a></li><li class="navigation-right " data-v-f8e9e086><a href="https://blog.csdn.net/nav/server" data-report-click="{"spm":"1001.2100.3001.7366","extend1":"server"}" data-report-view="{"spm":"1001.2100.3001.7366","extend1":"server"}" data-v-f8e9e086>服务器