【Android】Charles抓包
fengqingxiuyi opened this issue · 4 comments
Charles抓包
本文主要介绍个人在Mac上
使用Charles抓包过程中的使用方法,以及一些遇到的问题。Windows上可能有些许操作不同,不过基本上是一样的。
简介
官网:Charles Web Debugging Proxy - Official Site
概述:官网简介
破解版下载地址:Charles Mac上的抓包工具
破解版使用教程:同下载地址页面,主要查看内容为:激活方法、解压密码、红框内容、评论区域。
基本使用
- 在手机上打开已连接的网络,设置代理;
- 在代理选项,选择手动选项,输入电脑已连接网络的IP地址;
- 在代理选项,选择手动选项,输入端口号:
8888
; - 随便访问个网页,电脑上会弹出
是否允许抓包
之类的弹框,点击允许即可使用Charles进行抓包。
备注:端口号填写8888
是因为在Charles软件的Proxy-Proxy Settings...窗口下的Proxies选项卡下的HTTP Proxy选框中Port的默认值是8888
。
高级使用
过滤抓包网址
默认情况下,只要设置了代理,就会全部抓取并显示,但是有时候我们只需要查看某一个或者某几个网址的访问情况,怎么办呢?显然过滤
是一个很好的选择。
步骤1:
步骤2:
你可以点击Add按钮,新增想要访问的地址信息(包括:协议、域名、端口等);如果你不想查看
某个网址的信息了,将其前面的对勾勾掉即可;如果你想要保存
过滤规则,点击Export按钮即可保存到本地,点击Import按钮可以将本地过滤规则文件导入。
过滤手机访问权限
这里首先说明一下两个比较重要的点:
- 过滤规则中的IP地址是你当时成功进行代理时所连网络的IP地址;
- 如果你在一开始设置代理,Charles跳出弹框询问你是否进行代理的时候,点击了
拒绝
,不用着急,进入这里,将你所连网络的IP地址通过Add按钮新增即可。
步骤1:
步骤2:
安装、校验、配置、使用证书
注意:
证书的安装
、校验
是在手机上完成的,配置
是在电脑上完成的,使用
是双方共同完成的。
手机相关路径是与下面的手机信息相关的,其他手机请自行查找...
手机信息:
机型:MI 4LTE
Android版本:6.0.1 MMB29M
MIUI版本:MIUI 8.1 | 稳定版 8.1.3.0(MXDCNDI)
安装
步骤1:
步骤2:
步骤3:
在手机上设置代理
(可以查看基本使用章节)后打开浏览器,访问网址chls.pro/ssl
成功后就会出现以下三种情况:
- 自动下载并且自动安装;(直接进入校验章节即可)
- 自动下载但不自动安装;(需要找到文件,点击,进行手动安装)
- 自动下载但不自动安装且手动安装失败;(这里稍微阐述一下)
步骤3-3问题描述:
情景:一开始从未安装过证书,接着执行到步骤3-1,能正常使用;然后代理到另一台电脑
的Charles,删除证书,再安装证书,也执行到步骤3-1,也能正常使用;最后再代理到本机
的Charles,删除证书,再安装证书,执行到步骤3-3,出现安装失败,无法读取证书文件
此类提示。
解决:折腾太久,搞不定,后来有幸发现了这篇文章才得以解决:如何用charles进行https抓包,感谢作者:junshao5,这里简述一下我自己的操作流程。
步骤3-3问题解决:
流程:
根据上图操作流程,将文件保存到本地(我这边保存的格式是.cer
,有兴趣的话可以尝试保存为.pem
),接着发送到手机上(可以通过QQ),然后删除已经安装的Charles证书,再点击 设置-更多设置-系统安全-从存储设备安装 选项安装证书;如果你仍然安装失败,那我也无能为力了...
校验
校验手机上证书是否安装成功其实已经在步骤3-3问题解决的流程中提到了,进入 设置-更多设置-系统安全-信任的凭据 ,点击 用户 选项,如果发现包含Charles Proxy CA
字样的证书,证明你已经安装成功了。
配置
步骤4:
步骤5:
这是我需要的配置的允许抓取HTTPS开头的地址,不用参考,忽略即可,具体需要配置什么根据自己的需要决定!
使用
请参考基本使用章节!
附
附上一篇感觉比较全的文章:Charles 从入门到精通
我的Android手机都配置了以上流程,还是抓不了包。但IOS手机可以。求教啊
@renwfy 请问抓不了包的具体表现形式是什么?下面是一些抓包失败的场景:
1、证书安装错误,解决方式:重装
2、证书过期,解决方式:重装
3、未配置SSL Proxying,解决方式:至少需要在配置章节步骤5对应的图中配置*:443
iPhone 升级到 ios10.3.1 后 Charles 抓包遇到 Failure SSLHandshake: Received fatal alert: certificate_unknown