快捷搜索:  汽车  科技

char一般怎么用?Charls的简单使用

char一般怎么用?Charls的简单使用我们在进行B/S架构的Web项目开发时,在前端页面与后台交互的调试的时候,通常使用在JSP中加入“debugger;”断点,然后使用浏览器的F12开发者工具来查看可能出错的地方的数据。或者使用HttpWatch来抓包分析。Charls代理抓包过程:tcp(Transmission Control Protocol,传输控制协议):三次握手 面向连接、传输可靠(保证数据正确性 保证数据顺序)、用于传输大量数据(流模式)、速度慢,建立连接需要开销较多(时间,系统资源)Udp(User Data Protocol,用户数据报协议) 面向非连接、传输不可靠、用于传输少量数据(数据包模式)、速度快。以https为例,看看抓包的原理过程

char一般怎么用?Charls的简单使用(1)

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

charles通过将自己设置成系统的网络访问代理服务器,使所有的网络请求都通过它,以此达到对网络封包的截取和分析。

网络传输协议:

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

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

tcp(Transmission Control Protocol,传输控制协议):三次握手 面向连接、传输可靠(保证数据正确性 保证数据顺序)、用于传输大量数据(流模式)、速度慢,建立连接需要开销较多(时间,系统资源)

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

char一般怎么用?Charls的简单使用(2)

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

char一般怎么用?Charls的简单使用(3)

Charls代理抓包过程:

char一般怎么用?Charls的简单使用(4)

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)—抓包是抓取网络数据,这个数据包括很多内容,不一定只是网页,比如也可能是图片,视频流等等。

简单说,爬虫就是针对为了寻找特定网页而设计的算法写成的软件。抓包就是根据标准的网络传输协议来设计的一套软件。

从难度上来讲,爬虫很难设计,因为涉及到大数据处理。抓包就比较简单了,因为有标准的协议,处理的数据对象复杂度低。

猜您喜欢: