Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

【Android】Charles抓包 #16

Closed
fengqingxiuyi opened this issue Mar 6, 2017 · 4 comments
Closed

【Android】Charles抓包 #16

fengqingxiuyi opened this issue Mar 6, 2017 · 4 comments

Comments

@fengqingxiuyi
Copy link

fengqingxiuyi commented Mar 6, 2017

本文来自尚妆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 从入门到精通

@renwfy
Copy link

renwfy commented Jun 27, 2017

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

@ShowJoy-com
Copy link
Owner

@fengqingxiuyi

@fengqingxiuyi
Copy link
Author

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

@fengqingxiuyi
Copy link
Author

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

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants