背景Charles是一个HTTP和SOCKS代理服务器。代理请求和响应使Charles能够在请求从客户端传递到服务器时检查和更改请求,并在请求从服务器传递到客户端时检查和更改响应。PC端抓包1.在菜单中选择Proxy->MacOSXProxy2。确保Charles处于StartRecording状态。手机端抓包1.手机和电脑在同一网络:2.关闭电脑上的防火墙,打开Charles的代理:Proxy->ProxySettings弹窗,填写代理端口(默认端口为8888,无需修改),勾选EnabletransparentHTTPproxying。在wifi中找到代理,选择手动,填写IP地址,端口8888HTTPS抓取PC端证书下载安装:帮助->SSL代理->安装查尔斯根证书方法一:直接下载方法二:如果可以'下载不了,去官方下载证书信任下载安装手机证书:Help->SSLProxying-InstallCharlesRootCertificateonaMobileDevice。然后会弹出如下提示。下载后在手机浏览器中输入:chls.pro/ssl,打开手机设置-通用-描述文件和设备管理,选择配置描述文件,选择信任,看到已经通过验证。最后手机设置-通用-关于手机-证书信任设置,勾上使用HTTPS抓包。注意:手机和电脑的证书版本需要对应。你的手机已经有旧版本,但是电脑有新版本,所以你要重新下载。为什么要安装证书如果是HTTP请求,因为数据本身没有加密,直接显示请求内容和返回结果。但是HTTPS加密了数据,所以Charles面对客户端,伪装成服务端,向服务端伪装成客户端。Charles拦截客户端的请求,冒充客户端向服务端发起请求,服务端将服务端的CA证书返回给“客户端”(实际是Charles);Charles拦截服务器的响应,获取服务器证书公钥,然后制作证书Certificate,替换服务器证书发送给客户端。(这一步Charles获取了服务器证书的公钥);客户端收到“服务器”(实际是Charles)的证书后,生成一个对称密钥,用Charles的公钥加密后发送给“服务器”(Charles);Charles截获客户端的响应,用自己的私钥解密对称密钥,用服务器证书的公钥加密后发送给服务器。(这一步,Charles获得了对称密钥);服务器用自己的私钥解密对称密钥,并向“客户端”(Charles)发送响应;Charles拦截服务器的响应,替换为自己的证书,发送给客户端;当然,如果用户不选择信任Charles安装的CA证书,Charles将无法获取到请求内容。还有一种方式,如果客户端内置了CA证书,如果Charles把自己的证书发给客户端,客户端会发现和程序中的证书不一致,不会通过。此时,查尔斯无法获取信息。.基本设置工具导航栏Charles顶部是菜单导航栏,工具导航栏在菜单导航栏下方。视图如下图所示:清除所有捕获的请求。红点状态表示正在抓取请求,灰色状态表示当前没有抓取请求。灰色状态表示未启用网速限制,绿色状态表示启用网速限制。灰色状态表示断点未启用,红色状态表示断点已启用。编辑修改请求,点击修改请求内容。重复请求,点击后会再次发送选中的请求。验证所选请求的响应。常用功能包括工具菜单中的常用功能。常用设置,包括Proxy菜单中的常用设置。structure按域名划分序列按时间排序太多,可以看工具栏底部,按FilterUserGuide过滤ProxyProxy菜单包含以下功能:Start/StopRecording:开始/停止录制会话。Start/StopThrottling:开始/停止节流。启用/禁用断点:打开/关闭断点模式。录音设置:录音会话设置。ThrottleSettings:油门设置。BreakpointSettings:断点设置。ReverseProxiesSettings:反向代理设置。端口转发设置:端口转发。Windows代理:记录计算机上的所有请求。ProxySettings:代理设置。SSL代理设置:SSL代理设置。访问控制设置:访问控制设置。外部代理设置:外部代理设置。Web界面设置:Web界面设置。RecordingSettings(录音会话设置)RecordingSettings有Options、Include、Exclude三个选项卡:Options:通过RecordingSizeLimits来限制录音数据的大小。当Charles记录日志时,请求、响应头和响应主体存储在内存中,或写入磁盘上的临时文件。有时,内存中的数据量可能会变得太多,Charles会通知您并停止记录。在这种情况下,您应该清除Charles会话以释放内存,然后重新开始记录。在录制设置中,您可以限制Charles录制的最大大小;这根本不会影响您的浏览,Charles只会停止录制。include:只记录匹配配置地址的请求。排除:只有匹配配置地址的请求才不会被记录。或者使用Focus快速过滤ThrottleSettings(节流设置)模拟弱网环境Bandwidth:BandwidthUtilistation:UtilizationpercentageRound-trip:往返延迟MTU:bytesBreakpointSettings(断点设置)WindowsProxy(记录所有请求在computer)抓取电脑端请求,勾选WindowsProxy,如果只需要抓取移动端请求,不勾选此项。ProxySettings(代理设置)设置代理默认端口号SSLProxySettings(SSL代理设置)勾选EnableSSLproxying,完成对Charles的SSL代理设置。之后还可以选择Add,然后填写需要监控的Host和Port信息,这样就达到了为域名启用SSL代理的目的。ToolsTools菜单包含以下功能:NoCachingSettings:禁用缓存设置。阻止Cookie设置:禁用Cookie设置。MapRemoteSettings:远程映射设置。MapLocalSettings:本地地图设置。重写设置:重写设置。黑名单设置:黑名单设置。白名单设置:白名单设置。DNS欺骗设置:DNS欺骗设置。MirrorSettings:镜像设置。自动保存设置:自动保存设置。客户端进程设置:客户端进程设置。编:编辑、修改。重复:重复发送数据包。RepeatAdvanced:高级重复发送。验证:验证。发布要点:发布要点。导入/导出设置:导入/导出设置。配置文件:配置文件。发布要点设置:发布要点设置。Mapmapping:MapRemoteSettings:远程映射设置。MapLocalSettings:本地地图设置。Charles的Map功能分为两种:MapRemote和MapLocal。顾名思义,MapRemote将指定的网络请求重定向到另一个URL请求地址,MapLocal将指定的网络请求重定向到本地文件。MapRemoteSettings使用:图,将所有www.csc.com请求重定向到www.www.csc.com(一些比较复杂的网络请求),可以在本地保存请求结构,然后使用MapLocalSettings(本地映射)文件.RewriteRewrite函数适用于对某类网络请求进行一些定期的替换,以达到修改结果的目的。接口所有元素的内容都可以改写:header、host、url、path、queryparam、responsestatus、body。Charles功能总结拦截Http和Https网络数据包。支持重发网络请求,方便后端调试。支持修改网络请求参数。支持网络请求的拦截和动态修改。支持模拟慢速网络。结构视图按访问的域名对网络请求进行分类。Sequence视图按访问时间对网络请求进行排序。Map函数适用于将某些请求长期重定向到另一个网络地址或本地文件。Rewrite功能适用于一些网络请求的定期替换。Breakpoints功能适合做一些临时修改。
