Charles的使用二 设置代理抓取Http请求包

Charles 主要提供两种查看封包的视图,分别名为 “Structure” 和 “Sequence”。

1.Structure 视图将网络请求按访问的域名分类。
Structure

2.Sequence 视图将网络请求按访问的时间排序。
Sequence

下面将一一介绍这些如何配置和使用

一. 将Charles设置成系统代理

Charles 是通过将自己设置成代理服务器来完成抓包的,勾选系统代理后,系统本地发出去的请求都能被截取下来。如果只抓取APP的包的话,可关闭此配置,这样不会出现太多的数据看着比较乱,再次点击下图菜单中的macOS Proxy选项,去掉打勾。

代理设置01

需要注意的是,Chrome 和 Firefox 浏览器默认并不使用系统的代理服务器设置,而 Charles 是通过将自己设置成代理服务器来完成封包截取的,所以在默认情况下无法截取 Chrome 和 Firefox 浏览器的网络通讯内容。如果你需要截取的话,在 Chrome 中设置成使用系统的代理服务器设置即可,或者直接将代理服务器设置成 127.0.0.1:8888 也可达到相同效果。

二. 截取移动设备上的网络请求包

我们在调试移动APP时,需要抓取APP发送的数据包,首先进行Charles的设置,Proxy -> Proxy Settings默认端口是8888,根据实际情况可修改。

设置代理

查看本机IP地址,打开cmd窗口,Mac输入ifconfig,Windows输入ipconfig
会出现电脑的IP地址,我这里使用的是Mac,地址如下
ip地址
或者通过charles的Help -> Local IP Addresses查看ip地址:
ip地址

然后配置手机代理,IOS和Android配置差不多

Android手机代理设置

IOS手机代理设置

保存手机端的代理设置,打开要调试的APP,请求就会先发送给Charles,然后验证是否允许访问:

代理请求

当点击允许后,可以在Proxy -> Access Control Settings里看到可以访问此代理服务器列表

代理列表

注意

如果不小心点击了拒绝,可以手动添加手机IP/Mac地址到允许访问列表,或者重启Charles,手机再次访问,会再次提示选择。

如果不想每换一个手机都要进行验证,可以配置允许所有手机访问,加入

0.0.0.0/0(IPv4)或::/0(IPv6)

现在就可以抓包了,拿一款我们公司开发的乐视车联APP来做测试:


三. 过滤网络请求

通常情况下,网络请求是非常大量的,从几十个请求里找到我们需要的观察的某个请求比较费时,那么我们就需要对网络请求进行过滤,只监控向指定目录服务器上发送的请求。有两种方法:

  1. 在Sequence界面的中部的Filter栏中填入需要过滤出来的关键字。例如我们的服务器的地址是:*.leautolink.com,那么只需要在Filter栏中填入leautolink即可。(一般用于临时过滤)
    这里写图片描述

  2. 在Charles的菜单栏选择”Proxy”->”Recording Settings”,然后选择Include栏,选择添加一个项目,然后填入需要监控的协议,主机地址,端口号。这样就可以只截取目标网站的封包了。如下图所示:(固定过滤地址)

四. 代理转发

实际开发时,有这样的场景,服务端线上版本有bug,你在本地修改程序后,需要模拟实际的线上环境,来验证程序的正确性,最笨的方法就是让客户端修改一下APP的调用地址到你本机,然后重新打一个版本供你模拟测试,这样虽然可以,但每次遇到bug都要这么做的话,那效率极其低下,然而Charles为我们解决了这个问题。

请求转发,把调用方调用的地址转发到你本机地址的程序进行执行。

右键 -> Map Remote …

并且配置Tools -> Map Romote

代理设置列表

运行APP

猜你喜欢

转载自blog.csdn.net/abc6368765/article/details/81101976