抓包便是将网络传输发送与吸收的数据包进行截获、重发、编辑、转存等操作,也用来检讨网络安全。
抓包也常常被用来进行数据截取等。

Charles通过将自己设置成系统的网络访问代理做事器,使所有的网络要求都通过它,以此达到对网络封包的截取和剖析。

网络传输协议:

http(HyperText Transfer Protocol,超文本传输协议) 是一种无状态协议,便是说客户端发送一次要求,做事器端吸收要求,经由处理返回给客户端信息,然后客户端和做事器真个链接就断开了,为了掩护他们之间的链接,让做事器知道这是前一个用户发送的要求,必须在一个地方保存客户真个信息,有两种办理方案,一是在客户端保存(Cookie),二是在做事器端保存(Session)。

jsp不执行debuggerCharls的简略应用 Java

https(Hypertext Transfer Protocol over Secure Socket Layer,安全为目标的HTTP通道),即HTTP下加入SSL层,HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议 要比http协议安全。

tcp(Transmission Control Protocol,传输掌握协议):三次握手 面向连接、传输可靠(担保数据精确性,担保数据顺序)、用于传输大量数据(流模式)、速率慢,建立连接须要开销较多(韶光,系统资源)

Udp(User Data Protocol,用户数据报协议) 面向非连接、传输不可靠、用于传输少量数据(数据包模式)、速率快。

以https为例,看看抓包的事理过程

Charls代理抓包过程:

charls的浸染:

我们在进行B/S架构的Web项目开拓时,在前端页面与后台交互的调试的时候,常日利用在JSP中加入“debugger;”断点,然后利用浏览器的F12开拓者工具来查看可能出错的地方的数据。
或者利用HttpWatch来抓包剖析。

在开拓移动端项目没有网页的情形下,就不能通过这种办法抓取数据进行剖析了。
这时可以利用Charles知足以上哀求。
它把客户真个要求数据,以及做事端返回的数据完完全整地抓取下来。

对付测试工程师来说兼抓包定位协议类bug、设置网络阀来进行网络测试、对协议类的接口数据进行映射已修正环境,还可以对做事器进行大略压力测试等等实用功能。

常用charls做什么?

(1)过滤网络要求

通过Filter过滤:

在 Filter 栏中输入想要过滤出来的关键字,比如只想查看包含关键字:baidu 的要求,只须要在 Filter 栏中输入关键字:baidu 即可;当然也支持通配符,比如我们想要查看包含关键字:itunes,并且以 .com 结尾的要求,只须要在 Filter 栏中输入 itunes..com 即可

通过Include过滤:

可以通过 “Proxy”->“Recording Settings”,选中 Include 栏,添加一项, 设置须要抓取的包,比如我只想抓取 www.baidu.com 域名下的要求,可以按照如下设置,就能只去抓取符合规则的目标要求,当前也可以在 Exclude 中设置打消的要求。

总结:

Filter 和 Include 的差异便是: Include 是只抓取符合哀求的要求,不符合的要求就不再抓取,而 Filter 只是将先要抓取的要求筛选出来,但是还是去抓取了所有的要求;综合两者我们可以按照自己的需求进行设置如何筛选

(2)代理转发

我们在进行本地开拓功能的测试时,可以将手机要求的地址转发到本机地址的程序进行实行。
右键选择Map Remote,配置要求转发的地址。

(3)重放和编辑

点击一个要求,右击弹出菜单栏,我们可以进行各种操作,比如复制、保存、编辑、重复要求等等,我们可以编辑修正任意要求信息,比如URL地址、端口、参数等等,点击“Execute”按钮即可发送修正后的要求。

通过 Repeat Advanced 高等重放功能可以作为大略的性能测试,可以设置重复次数、并发数以及延时等。

(4)仿照慢速网络

有时候开拓中须要测试用户在网络情形比较的差的时候运用的表现情形,可以利用Charles限流设置,“Proxy” -> “Thorttle Settings” 中设置,或者只针对某些域名进行设置,如下针对特定Hosts的设置。

(5)Breakpoints - 断点功能

有时候对付一些分外要求在发往做事器之前想要修正一些参数,或者在做事器相应完成之后修正相应信息,此时可以利用Charles的断点功能,类似Xcode中的断点调试,设置断点之后,当有网络要求的时候Charles会自动跳转到断点处,此时我们就能进行干系的修正,断点设置步骤:“Proxy” -> “Breakpoints Settings”,弹出设置栏,选中 “Enable Breakpoints”,添加须要调试的要求即可调试。

扩展

四大抓包工具,总体可以分为两类:

(1)设置代理抓取http包

Charles

优点:利用大略,只需配置一下代理地址就可以,要抓取https协议的配置也很大略,只要安装下charles的证书就可以了

缺陷:只支持抓取http协议

mitmproxy这些软件

优点:命令行操作,可以在无GUI界面的做事器上利用,安装好mitmproxy供应的证书后,也可以剖析https要求,不仅可以抓包,还支持对包的拦截、修正、重复,这是常规抓包软件不具备的

缺陷:仅支持http协议的抓包

(2)直接抓取经由网卡的所有协议包

最出名便是大名鼎鼎的wireshark

优点:功能强大,可以抓取所有协议的包,抓到的原谅易剖析

缺陷:由于线上做事器没有GUI,只有命令行,因此无法在线上做事器利用无法剖析https数据包,由于wireshark是在链路层获取的数据包信息,以是获取到的https包是加密后的数据,因此无法剖析包内容。
当然,我们可以对https数据包进行解密, 但是操作具有一定的繁芜度,可能要花费很多韶光。

linux自带的抓包软件tcpdump

优点:功能强大,可以抓所有协议的包,linux自带,直接在所有的做事器上面抓包,这是其他抓包软件不具备的

缺陷:数据包剖析困难,须要合营wireshark利用,和wireshark一样,无法剖析https数据包

对付这几个抓包神器,总结了下利用场景:

(1)只抓http协议的话,推举利用mitmproxy。
mitmproxy丰富的功能不仅可以知足我们的抓包需求,还可以提升我们的事情效率。
比如测试可以抓包后一键重发要求来重现bug,开拓调试的时候可以修正要求内容等等。

(2)如果是在线上的没有GUI的做事器,推举利用tcpdump,虽然mitmproxy也可以支持命令行抓包,但是生产环境的做事器最好不要乱安装第三方插件。
其余,大多数做事器都有装tcpdump。
我们可以通过把要求的内容输出到文件,然后拷贝会自己的电脑用wireshark剖析。

(3)想要抓取http以外的协议的话,直接上wireshark。
功能强大

(4)对付Charles,觉得用了mitmproxy之后,就基本用不上Charles了。

抓包和爬虫的差异:

(1)爬虫是搜索引擎方面的,比如你在百度搜索 关键字 “刘德华” ,然后百度利用爬虫算法,就会获取和刘德华有关的所有网页,这便是搜索的结果。

(2)—抓包是抓取网络数据,这个数据包括很多内容,不一定只是网页,比如也可能是图片,视频流等等。

大略说,爬虫便是针对为了探求特定网页而设计的算法写成的软件。
抓包便是根据标准的网络传输协议来设计的一套软件。

从难度上来讲,爬虫很难设计,由于涉及到大数据处理。
抓包就比较大略了,由于有标准的协议,处理的数据工具繁芜度低。