HTTP抓包实战(txt+pdf+epub+mobi电子书下载)


发布时间:2020-05-25 13:54:04

点击下载

作者:肖佳

出版社:人民邮电出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

HTTP抓包实战

HTTP抓包实战试读:

前言

为什么写这本书

我从事软件测试工作10多年,一直有写博客的习惯,在博客园发表了上百篇关于开发和测试的高质量文章。把平常工作学的知识和业余时间倒腾的技术总结成博客,对我来说是非常好的沉淀方式,同时也可以帮助很多的技术人员。这些技术文章构成了本书的重要素材。

最近看到身边很多朋友都已经出书了,为什么我自己不出本书呢?我还曾经在培训机构担任软件测试的培训讲师,培养过上千名的软件测试人员,对于培训非常有经验。所以我感觉,写一本技术图书是水到渠成的事情了。

为了把书写好,我就开始在外面“吹牛皮”,说我要出书了。先把话说出去,然后逼着自己每天花2小时写书。否则牛皮吹出来了,书没写出来就丢人了。本书资源

我为本书创建了一个学习QQ群:656587652。我将在QQ群中解答读者的问题,并且还会给大家一些补充的学习资料。本书的核心思想

这是一本讲抓包的书。本书的核心思想可以总结为3个词:包、抓包、发包。

本书内容主要包括HTTP数据包长什么样子,如何使用工具来抓包,如何使用工具来发包。想要学会HTTP协议,就要同时熟练使用Fiddler抓包工具。想要学好JMeter工具,就必须先学好HTTP协议。

HTTP协议、Fiddler抓包工具、JMeter和Postman,这几个方面是相辅相成的,应该一起学。本书的独特之处

目前市面上已经有很多经典的图书来讲HTTP协议和Fiddler,但它们都是独立的书,而本书巧妙地将这些结合起来,包含了很多有趣的小例子,深入浅出地用实际的操作例子来讲述相关知识,而且还有配套的视频教程。读者可以轻松掌握从第一章到最后一章的内容,学习的过程会很顺利。本书适合谁看

本书适合前端开发工程师、测试工程师、线上故障支持人员、接口开发人员和Web开发人员阅读。本书介绍的技术适用场景

开发人员可以使用本书介绍的技术来进行Web开发、Web调试等。

测试人员可以将本书介绍的技术用于做基于HTTP协议的自动化性能测试、Restful API自动化测试和接口测试等。

本书介绍的技术还适合用于开发测试工具、邮箱自动登录以及开发网络爬虫等。本书的内容和组织结构

本文着重介绍了HTTP协议,以及如何使用Fiddler来抓HTTP包,如何分析HTTP包。本书还介绍了如何使用JMeter等工具来发送HTTP包,实现软件自动化测试。

本书配有生动有趣的实例。本书分为22章,每章的内容并不多,但配了很多的图,方便读者参考并动手实践。致谢

在我写书的时候,我33岁,感觉到了非常严重的中年危机。工作十多年了,还没什么大的成就。

写书的过程的确很耗费时间和体力。白天上班,周末还要兼职当讲师,业余时间还要教小孩英语,送小孩去各种培训班。写作本书期间,我每天晚上只睡5个小时,把其他时间都用在了写书上面。

要感谢高博老师的鼓励。高博老师是我以前在VMware的同事。有一天高博老师打电话给我,鼓励我写这本书。

另外要感谢人民邮电出版社的陈冀康编辑在本书的写作过程中给予的大力支持。资源与支持

本书由异步社区出品,社区(https://www.epubit.com/)为您提供相关资源和后续服务。配套资源

本书提供如下资源:

本书作者针对书中内容的配套视频讲解。

读者请通过本书封底的刮刮卡观看,也可通过异步社区“课程”频道订阅。提交勘误

作者和编辑尽最大努力来确保书中内容的准确性,但难免会存在疏漏。欢迎您将发现的问题反馈给我们,帮助我们提升图书的质量。

当您发现错误时,请登录异步社区,按书名搜索,进入本书页面,点击“提交勘误”,输入勘误信息,单击“提交”按钮即可。本书的作者和编辑会对您提交的勘误进行审核,确认并接受后,您将获赠异步社区的100积分。积分可用于在异步社区兑换优惠券、样书或奖品。与我们联系

我们的联系邮箱是contact@epubit.com.cn。

如果您对本书有任何疑问或建议,请您发邮件给我们,并请在邮件标题中注明本书书名,以便我们更高效地做出反馈。

如果您有兴趣出版图书、录制教学视频,或者参与图书翻译、技术审校等工作,可以发邮件给我们;有意出版图书的作者也可以到异步社区在线提交投稿(直接访问www.epubit.com/selfpublish/submission即可)。

如果您是学校、培训机构或企业,想批量购买本书或异步社区出版的其他图书,也可以发邮件给我们。

如果您在网上发现有针对异步社区出品图书的各种形式的盗版行为,包括对图书全部或部分内容的非授权传播,请您将怀疑有侵权行为的链接发邮件给我们。您的这一举动是对作者权益的保护,也是我们持续为您提供有价值的内容的动力之源。关于异步社区和异步图书“异步社区”是人民邮电出版社旗下IT专业图书社区,致力于出版精品IT技术图书和相关学习产品,为作译者提供优质出版服务。异步社区创办于2015年8月,提供大量精品IT技术图书和电子书,以及高品质技术文章和视频课程。更多详情请访问异步社区官网https://www.epubit.com。“异步图书”是由异步社区编辑团队策划出版的精品IT专业图书的品牌,依托于人民邮电出版社近30年的计算机图书出版积累和专业编辑团队,相关图书在封面上印有异步图书的LOGO。异步图书的出版领域包括软件开发、大数据、AI、测试、前端、网络技术等。异步社区微信服务号视频阅读说明

本说明以第3章中的视频为例

第1步:用微信扫码书中第3章中的二维码,微信将会弹出公众号“内容市场”申请获取权限的页面,如下所示:

第2步:点击“允许”,出现以下页面:

第3步:点击加锁图标,出现以下页面,然后点击“使用刮刮卡兑换本书籍全部增值内容”:

第4步:输入刮刮卡序列号,点击应用就可以解锁全部视频,刮刮卡可以在书的背面找到。

如果想在电脑上看视频,可以用电脑登录微信,然后用微信公众号看。第1章HTTP协议和Fiddler抓包

Web浏览器和Web服务器之间是通过HTTP协议相互通信的。HTTP协议用途非常广泛,HTTP协议是任何IT从业人员都需要掌握的基础知识。

当今Web程序的开发技术真是百家争鸣,有ASP.NET、PHP、JSP、Perl、AJAX等。无论Web技术在未来如何发展,理解Web程序之间通信的基本协议相当重要。1.1 HTTP协议介绍1.1.1 什么是HTTP协议

协议是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或规则。

超文本传输协议(HyperText Transfer Protocol,HTTP)是互联网上应用最广泛的一种网络协议,它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器。

目前我们使用的HTTP协议是HTTP/1.1版本。1.1.2 如何学习HTTP协议

协议是很抽象的东西,想要学好HTTP协议,必须先了解HTTP协议的基本知识;然后找一个抓包软件实实在在地看到数据包的内容,并且看到数据包是如何在浏览器和Web服务器中进行交互的。这才是学习HTTP的正确方法。

Fiddler就是我们需要的抓包工具。你对HTTP协议越了解,你就能越掌握Fiddler的使用方法。你越使用Fiddler,它就越能帮助你了解HTTP协议。HTTP协议和Fiddler是相辅相成的,应该一起学习。

我们通过Fiddler抓包的方式来学习HTTP协议。1.1.3 HTTP协议的工作原理

我们打开浏览器,在地址栏中输入URL,然后我们就看到了网页。原理是怎样的呢?

实际上,我们输入URL后,浏览器就给Web服务器发送了一个HTTP请求(HTTP Request),Web服务器接到HTTP请求后进行处理,生成相应的HTTP响应(HTTP Response),然后发送给浏览器。浏览器解析HTTP响应中的HTML,这样我们就看到了网页。该过程如图1-1所示。图1-1 HTTP协议工作原理

浏览器客户端和Web服务器之间是通过HTTP协议来交流的。我们每天都会用浏览器浏览各种网站。目前主流的Web浏览器有微软的Internet Explorer、Firefox和Google的Chrome。

Web浏览器会给Web服务器发送一条HTTP请求,服务器会把Web对象发送给浏览器,浏览器解析Web对象,这些对象就显示在屏幕上了。

通过上面的介绍我们已经了解了HTTP协议的工作原理。那么HTTP请求和HTTP响应的数据包(报文)具体有哪些内容呢?协议是抽象的东西,是看不到的。下面我们使用Fiddler来抓包查看里面的内容。

就好比如果你想学习TCP/IP协议,你可以使用Wireshark来抓包学习里面的内容。1.2 Fiddler的介绍

Fiddler是世界上最强大最好用的Web调试工具,可以称得上是“神器”。其用途非常广泛,能记录所有客户端和服务器的HTTP和HTTPS请求,允许你监视、设置断点,甚至修改输入输出数据。

Fiddler包含了一个强大的基于事件脚本的子系统,并且能使用.NET语言进行扩展。

无论对开发人员或者测试人员来说,Fiddler都是非常有用的工具。

Fiddler是用C#开发的,作者是Eric Lawrence,是个大师级的人物,曾经在微软总部西雅图工作。1.2.1 Fiddler的下载和安装

Fiddler的官方网站是 www.fiddler2.com,下载地址是 http://www.getfiddler.com/。

Fiddler是用C#开发的,主要在Windows系统上运行。苹果Mac系统和Linux上有Beta版本可以运行,作者还在开发。

Fiddler有2个版本,Fiddler2和Fiddler4,两者功能相同。建议你使用Fiddler4。

Fiddler4是基于.NET Framework 4.0的。Win7和Win10系统一般都已经安装好了.NET Framework 4.0,所以在Fiddler的下载页面会提供Fiddler4的下载。

Fiddler2是基于.NET Framework 2.0的,是为了照顾一些老的Windows系统用户而开发的,会逐渐被淘汰。

Fiddler一定要在官方网站下载,不建议在别的地方下载。目前官方网站只提供了英文版的Fiddler。1.2.2 Fiddler的基本界面

图1-2是Fiddler的基本界面,接下来简单介绍一下各个区域的作用,以便大家更好地掌握Fiddler的用法。

Fiddler基本界面包括如下区域。(1)主菜单栏:菜单中几乎可以启动所有的Fiddler功能,后续章节会对其进行讲解。(2)工具栏:提供了很多常见的命令。(3)Web Sessions列表(会话列表):显示捕捉到的每个Session的简短信息。平常都需要在这里选择一个或者多个Session后再进行操作。(4)功能面板:这里有很多选项卡,提供了很多功能。我们常用的是Inspectors选项卡。(5)QuickExec:命令行工具,可以输入简单的命令,例如输入cls可以清空Web Sessions。图1-2 Fiddler的基本界面(6)状态栏:上面显示了Fiddler的一些配置信息。1.2.3 Inspectors选项卡

Inspectors选项卡下可以查看HTTP请求和HTTP响应的报文结构。其中Raw选项卡可以查看完整的消息,Headers选项卡只查看消息中的Header。如图1-3所示。图1-3 Fiddler中的Inspectors选项卡1.2.4 Web Sessions列表

Fiddler窗口的左边是Web Sessions列表,是Fiddler中最重要的部分,显示了每个Session的摘要信息。Fiddler中的大部分操作都需要在Web Sessions列表中选择一个或者多个Session,再进行其他操作。Web Sessions列表中的表头可以排序。

一个Session包含了一个HTTP请求和一个HTTP响应,如图1-4所示。图1-4 Web Sessions列表

Web Sessions列表栏中包含的信息如下。(1)#:这是Fiddler生成的ID(最好是按顺序排列)。(2)Result:响应的状态码。(3)Protocol:使用的协议HTTP或者HTTPS。(4)Host:服务器的主机名和端口号。(5)URL:URL的路径。(6)Body:HTTP响应中包含的字节数。(7)Caching:跟缓存相关的字段的值。(8)Content-Type:响应中Content-Type的值。(9)Process:对应本地Windows的进程。1.2.5 Fiddler捕获HTTP协议的数据包(1)启动Fiddler,打开任何一个浏览器,输入 http://www.cnblogs.com/tankxiao/。(2)如图1-5所示,回到Fiddler界面,在Session列表中,会看到Fiddler已经捕获到了很多Session。可以选择任何一个Session,然后选择Inspectors选项卡,就可以查看详细内容。

到这里,我们已经学会怎么使用Fiddler来抓HTTP协议的数据包了。图1-5 查看HTTP请求和HTTP响应的内容1.2.6 Fiddler设置开始捕获和停止捕获

我们把捕获HTTP数据包的过程简称为抓包。在Fiddler的使用过程中,当我们已经抓到自己想要的数据包后,可以停止抓包,以避免抓到一些不需要的数据包。接下来介绍两种设置方法。

方法一:如图1-6所示,在Fiddler中单击File->Capture Traffic(快捷键是F12)来开始抓包或者停止抓包。图1-6 Capture Traffic

方法二:如图1-7所示,单击Fiddler左下角的“Capturing”按钮来开始抓包或者停止抓包。图1-7 “Capturing”按钮1.3 HTTP协议报文的结构

HTTP报文分2个:一个是HTTP请求报文,一个是HTTP响应报文。1.3.1 HTTP请求报文的结构

浏览器发送给Web服务器的HTTP请求报文内容如图1-8所示。图1-8 HTTP请求报文的过程

HTTP请求报文的详细内容如图1-9所示。图1-9 HTTP请求报文的详细内容

HTTP请求报文分为3部分:第一部分叫起始行(Request line),第二部分叫首部(Request Header),第三部分叫主体(Body)。

第一行中的Method表示请求方法,比如“POST”或者“GET”,现在使用的HTTP协议版本是HTTP/1.1。

第二部分是首部(Header),后面会详细介绍这些首部的用法。

第三部分是主体(Body)。

特别要注意,Header首部和Body(主体)之间有一个空行。1.3.2 HTTP响应报文的结构

Web服务器发送给浏览器的HTTP响应报文内容如图1-10所示。图1-10 HTTP响应报文的过程

HTTP响应报文的详细内容如图1-11所示。图1-11 HTTP响应报文的详细内容

Response消息的结构和Request消息的结构基本一样,同样也分为3部分:第一部分叫响应行(Response Line),第二部分叫响应首部(Response Header),第三部分是主体(Body)。

第一部分是起始行,有状态码和状态码消息,后面会详细介绍。

第二部分是首部(Header),后面会详细介绍这些首部的用法。

第三部分是主体(Body)。

特别要注意,Header首部和Body(主体)之间有一个空行。1.3.3 Fiddler捕获博客主页,查看HTTP请求和HTTP响应报文(1)启动Fiddler,打开浏览器,输入http://www.cnblogs.com/tankxiao/。(2)如图1-12所示,在Fiddler的界面中找到www.cnblogs.com/tankxiao/,然后选择Inspectors选项卡。图1-12 Raw选项卡(3)在HTTP请求中选择Raw选项卡,这样就能看到完整的HTTP请求报文。由于这是个GET方法,所以HTTP请求没有Body。(4)在HTTP响应中选择Raw选项卡,这样就能看到完整的HTTP响应报文。1.4 Fiddler抓包的原理

Fiddler为什么能抓包呢?Fiddler本质上是一个Web代理服务器。它的默认工作端口是8888。

我们可以查看Fiddler的工作端口。启动Fiddler,如图1-13所示,在菜单栏中单击Tools-> Fiddler options。图1-13 Fiddler的端口号1.4.1 什么是代理服务器

Web代理(Proxy Server)服务器是网络的中间实体。代理位于Web客户端和Web服务器之间,扮演“中间人”的角色。

HTTP的代理服务器既是Web服务器又是Web客户端。如图1-14所示。图1-14 代理服务器

代理服务器是网络信息的中转站,它具有以下功能。(1)共享网络。能解决仅仅有一条线路、一个公有IP的问题。在公有IP资源严重不足的情况下,可以满足局域网大量用户同时共享上网的需求。(2)提高了访问速度。因为大部分的代理服务器都有缓冲功能,可以直接读取,无须再连接到远程Web服务器。这样可以达到加快访问网站的速度、节约通信带宽的目的。(3)突破了访问限制。当访问权限受到限制时,可以使用有权限的代理服务器。(4)隐藏身份。内部网的用户要对外发布信息,就需要使用代理服务器的反向代理功能。这样就不会影响内部网络的安全性能,起到隐藏身份的目的。1.4.2 Fiddler的工作原理

Fiddler是以代理Web服务器的形式工作的,它使用代理地址:127.0.0.1,端口:8888。其工作原理如图1-15所示。图1-15 Fiddler工作原理

Fiddler启动的时候,会偷偷地把Internet选项中的代理修改为127.0.0.1,端口:8888。

当Fiddler退出的时候,它会自动在Internet选项中取消代理,这样就不会影响别的程序。

如果Fiddler非正常退出,这时候因为Fiddler没有自动注销,会造成网页无法访问。解决的办法是重新启动Fiddler。1.4.3 查看Internet选项代理设置

先启动Fiddler,打开控制面板,找到Internet属性,然后选择连接->局域网设置->高级,可以看到代理服务器地址已经被 Fiddler 设置为 127.0.0.1:8888 了。如图 1-16所示。

关闭Fiddler,可以看到代理服务器地址已经取消了。图1-16 Internet选项设置代理1.4.4 Fiddler如何捕获Firefox

有时候我们会发现,Fiddler能捕获IE和其他浏览器发出的请求,但是不能捕获Firefox发出的请求。

之所以不能捕获Firefox的请求,那是因为Firefox的代理服务器没有配置成Fiddler。

打开Firefox,在菜单栏中选择工具->选项->高级->网络->设置。选择使用系统代理设置,如图1-17所示。图1-17 Firefox设置代理(系统配置)

或者手动配置,指向Fiddler,如图1-18所示。图1-18 Firefox设置代理(手动配置)1.4.5 Fiddler能捕获哪些设备的HTTP数据包

任何支持代理的HTTP请求都能被Fiddler捕获到,首先Fiddler能捕获各种浏览器,比如IE、Firefox、Chrome发出来的数据包。

Fiddler还能捕获各种移动设备,比如Android手机、苹果手机、iPad等发出的数据包,如图1-19所示。图1-19 Fiddler可以支持的设备

Fiddler能捕获任何程序发出来的HTTP/HTTPS请求,只要这个程序支持Web代理服务器即可。

比如Fiddler能抓到QQ发出的包,当然QQ中发的聊天消息是抓不到的,因为QQ中的聊天信息使用的是OICQ协议,不是HTTP协议。

只要在QQ中设置代理服务器即可实现抓包,如图1-20所示。

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载