ShowJoy-com/showjoy-blog

【Android】Charles抓包

fengqingxiuyi opened this issue · 4 comments

本文来自尚妆Android团队青峰
发表于尚妆博客

Charles抓包

本文主要介绍个人在Mac上使用Charles抓包过程中的使用方法,以及一些遇到的问题。Windows上可能有些许操作不同,不过基本上是一样的。

简介

官网:Charles Web Debugging Proxy - Official Site

概述:官网简介

破解版下载地址:Charles Mac上的抓包工具

破解版使用教程:同下载地址页面,主要查看内容为:激活方法、解压密码、红框内容、评论区域。

基本使用

  1. 在手机上打开已连接的网络,设置代理;
  2. 在代理选项,选择手动选项,输入电脑已连接网络的IP地址;
  3. 在代理选项,选择手动选项,输入端口号:8888
  4. 随便访问个网页,电脑上会弹出是否允许抓包之类的弹框,点击允许即可使用Charles进行抓包。

备注:端口号填写8888是因为在Charles软件的Proxy-Proxy Settings...窗口下的Proxies选项卡下的HTTP Proxy选框中Port的默认值是8888

高级使用

过滤抓包网址

默认情况下,只要设置了代理,就会全部抓取并显示,但是有时候我们只需要查看某一个或者某几个网址的访问情况,怎么办呢?显然过滤是一个很好的选择。

步骤1:

RecordingSettings.png

步骤2:

RecordingSettingsDetail.png

你可以点击Add按钮,新增想要访问的地址信息(包括:协议、域名、端口等);如果你不想查看某个网址的信息了,将其前面的对勾勾掉即可;如果你想要保存过滤规则,点击Export按钮即可保存到本地,点击Import按钮可以将本地过滤规则文件导入。

过滤手机访问权限

这里首先说明一下两个比较重要的点:

  1. 过滤规则中的IP地址是你当时成功进行代理时所连网络的IP地址;
  2. 如果你在一开始设置代理,Charles跳出弹框询问你是否进行代理的时候,点击了拒绝,不用着急,进入这里,将你所连网络的IP地址通过Add按钮新增即可。

步骤1:

AccessControlSettings.png

步骤2:

AccessControlSettingsDetail.png

安装、校验、配置、使用证书

注意:

证书的安装校验是在手机上完成的,配置是在电脑上完成的,使用是双方共同完成的。

手机相关路径是与下面的手机信息相关的,其他手机请自行查找...

手机信息:

机型:MI 4LTE
Android版本:6.0.1 MMB29M
MIUI版本:MIUI 8.1 | 稳定版 8.1.3.0(MXDCNDI)

安装

步骤1:

InstallCertOnMobileOrRemoteBrowser.png

步骤2:

InstallCertOnMobileOrRemoteBrowserDialog.png

步骤3:

在手机上设置代理(可以查看基本使用章节)后打开浏览器,访问网址chls.pro/ssl成功后就会出现以下三种情况:

  1. 自动下载并且自动安装;(直接进入校验章节即可)
  2. 自动下载但不自动安装;(需要找到文件,点击,进行手动安装)
  3. 自动下载但不自动安装且手动安装失败;(这里稍微阐述一下)

步骤3-3问题描述:

情景:一开始从未安装过证书,接着执行到步骤3-1,能正常使用;然后代理到另一台电脑的Charles,删除证书,再安装证书,也执行到步骤3-1,也能正常使用;最后再代理到本机的Charles,删除证书,再安装证书,执行到步骤3-3,出现安装失败,无法读取证书文件此类提示。

解决:折腾太久,搞不定,后来有幸发现了这篇文章才得以解决:如何用charles进行https抓包,感谢作者:junshao5,这里简述一下我自己的操作流程。

步骤3-3问题解决:

流程:

SaveCharlesRootCertificate.png

根据上图操作流程,将文件保存到本地(我这边保存的格式是.cer,有兴趣的话可以尝试保存为.pem),接着发送到手机上(可以通过QQ),然后删除已经安装的Charles证书,再点击 设置-更多设置-系统安全-从存储设备安装 选项安装证书;如果你仍然安装失败,那我也无能为力了...

校验

校验手机上证书是否安装成功其实已经在步骤3-3问题解决的流程中提到了,进入 设置-更多设置-系统安全-信任的凭据 ,点击 用户 选项,如果发现包含Charles Proxy CA字样的证书,证明你已经安装成功了。

配置

步骤4:

SSLProxySettings.png

步骤5:

SSLProxySettingsDetail.png

这是我需要的配置的允许抓取HTTPS开头的地址,不用参考,忽略即可,具体需要配置什么根据自己的需要决定!

使用

请参考基本使用章节!

附上一篇感觉比较全的文章:Charles 从入门到精通

我的Android手机都配置了以上流程,还是抓不了包。但IOS手机可以。求教啊

@renwfy 请问抓不了包的具体表现形式是什么?下面是一些抓包失败的场景:
1、证书安装错误,解决方式:重装
2、证书过期,解决方式:重装
3、未配置SSL Proxying,解决方式:至少需要在配置章节步骤5对应的图中配置*:443

iPhone 升级到 ios10.3.1 后 Charles 抓包遇到 Failure SSLHandshake: Received fatal alert: certificate_unknown

解决方案:https://www.v2ex.com/t/353836