Charles安装配置详解(windows10,最新Android/iOS配置)

之前做爬虫一直用fiddler抓包,但最近一个项目需要抓取手机app里的https的内容,用fiddler试了一下感觉不大友好,遂尝试使用Charles工具,但这个工具主要用于macOS平台,网上许多关于windows版本的配置教程都不能实际解决问题,几经折腾才找到靠谱的教程解决了自己的问题,所以记录一下.

首先是安装及使用的教程:
https://www.axihe.com/charles/charles/windows-install.html

这个网站有非常详细的关于Charles的安装使用的教程,但是关于配置抓取手机app内容的部分不是很直观详细,于是我又找到了另一个详细的教程.

以下为详细步骤:

1.下载charles(下载链接

有条件的朋友尽量支持正版,要**的则可以参照:Charles**

    下载后安装,安装完成后打开,出现如下界面;

Charles安装配置详解(windows10,最新Android/iOS配置)

2、开始对 PC 端 的charles进行配置,点击proxy(代理),找到代理设置:

Charles安装配置详解(windows10,最新Android/iOS配置)

对代理端口进行进行配置,端口号默认8888,你可以自己修改,选中 enable transparent http prxying,代表启用http代理;

点击OK,完后配置。

如果你只想对pc端的数据交互进行抓取,那么到这一步就行了

 

3、对移动端,手机app上面的数据进行抓取。

    注意事项:手机与pc是否处于同一网络。

        3.1、开始配置移

            打开手机的WIFI功能区,进入链接WIFI设置界面,点击高级设置,进入以下界面,or 点击代理设置,进入代理设置界面。

Charles安装配置详解(windows10,最新Android/iOS配置)

代理服务器主机名称 填写你PC的IP地址,如果你不知道你PC的ip地址,可以在charles上查看到

Charles安装配置详解(windows10,最新Android/iOS配置)

本地IP地址,点击local IP Address 后直接就能看到你的PC网络的IP地址。

端口填写你在charles上设置的端口,如果你没有修改端口,依然是8888,那么直接填入8888;

点击完成or保存,charles会给你一个提示框,是否允许链接手机网络请求;

如下:

Charles安装配置详解(windows10,最新Android/iOS配置)

 点击允许,ALLOW.

如果把你点击了否认 Deny,那么你关闭charles,再重新走一遍吧(哈哈哈哈O(∩_∩)O哈哈哈~);

Warning:如果没有弹出提示框,那么请检查charles是否处于防火墙信任软件序列里,这个你可以在防火墙设置连看到.

Charles安装配置详解(windows10,最新Android/iOS配置)

        

将应用添加进入允许序列里,在不关闭防火墙的情况下,可以抓到数据,如果依然没有,那么久关闭防火墙,再试一次;

现在,charles就可以抓取手机上的数据了,包括网页、APP、及其他网络请求;甚至某些App网络安全做得不好,你都可以将你的账户和密码在charles*问到。

 Warning:这只能对http协议的数据进行抓取.

4、对https的解析,之前我们抓取http协议数据的时候,会发现一个问题,就是只要是https协议,那么全部是上锁了,并不能查看到数据。

现在,我们来对https解锁,因为https对证书加深了认证,所以我们要解锁,就必须安装charles的变色龙证书,依靠它,我们可以抓取到很多https裹挟的数据。

4.1、下载证书;点击charles上的help,

  Charles安装配置详解(windows10,最新Android/iOS配置)

安装PC端的证书,首先点击install charles root certificate ,会对你进行提示安装证书,点击确定安装

Charles安装配置详解(windows10,最新Android/iOS配置)

--------

Charles安装配置详解(windows10,最新Android/iOS配置)

一定要加入 “ 受信任的根证书颁发机构”,不然后续https解析不了;点击确定,完成PC的安装;

因为要抓取手机上的https网络请求数据,手机上也必须安装证书;

        首先点击  :

Charles安装配置详解(windows10,最新Android/iOS配置)

    

会出现获取手机端认证证书网址

Charles安装配置详解(windows10,最新Android/iOS配置)

IOS手机(以iOS12.3.1为例):

1.在 Safari 中访问 chls.pro/ssl 就直接会下载该证书,但是自iOS10 以后的版本,下载的证书是默认不信任的,没法使用,所以下载后,还需要配置

2.进入设置==>通用==>描述文件与设备管理==>安装(需要输入锁屏密码)

3.进入设置 ==>通用 ==>关于本机 ==> 证书信任设置 ==>启用Charles Proxy CA 证书

4.在电脑上点击允许,至此,即可抓包iOS平台的https链接了

参考资料:

https://blog.****.net/qq_40407699/article/details/80453803

 

Android手机:

进入该网址,会提示你下载证书,下载完成后自动安装,名称随你自己定;这里需要注意一下,很多手机必须要使用自带的浏览器才能成功安装该证书,至少华为和小米的是这样.

如果不行,可以参考这篇文章:

https://blog.****.net/qq_28831197/article/details/81196571

完成安装后

      因为是https,我们还需要在charles上添加ssl proxy服务

Charles安装配置详解(windows10,最新Android/iOS配置)

完成 ssl proxy 设置,五部曲;

Host:填写你要抓取API网址

 如:

            Charles安装配置详解(windows10,最新Android/iOS配置)

prot:一般填了host就填写443,手机上不用修改。点击添加,就会对单独的host进行数据解析;

如果host和port设置为*,则会解析抓取到的所有https请求;

Charles安装配置详解(windows10,最新Android/iOS配置)

配置后:

Charles安装配置详解(windows10,最新Android/iOS配置)

至此:关于charles的抓包和用于app代理的教程写完了;

waning:如果你在数据抓取活动完成后,关闭了charles,不再进行数据测试,打开浏览器,发现不能连接到网络,

    那么,首先你检查你是否处于联网状态,

    处于:进入网络设置:

Charles安装配置详解(windows10,最新Android/iOS配置)   

    

关闭你的代理:

Charles安装配置详解(windows10,最新Android/iOS配置)

因为存在一种可能,就是你的charles已经关闭,但是你的代理行为没有关闭,那么就会造成链接不到远程主机,也就是charles的端口;

安卓7.0以上的手机将Charles的证书默认设置为不信任,所以会导致部分app的数据抓取不到

Charles安装配置详解(windows10,最新Android/iOS配置)

解决方法:

1.我是开发者,我要抓自己app的包

官网解决方案:

https://www.charlesproxy.com/documentation/using-charles/ssl-certificates/

实际就是修改项目里的配置文件,使其默认信任,可以参考以下文章:

https://blog.****.net/xiexiangyu92/article/details/78458676

但上面的方法,对项目的开发者来说可用,对搞爬虫的来说,基本用不了,除非懂得Android开发,还会反编译啥的,总之,很麻烦

2.研究别人的app

一. 反编译

反编译后用官方的方法绕过,至于反编译的难度,这个不好说,有的app反**做得好,会很难。方法还是说一下,使用apktool反编译应用程序,完成该过程后,在resources目录中建好网络安全配置文件,设置成信任用户证书。完成后,使用apktool重新编译应用程序,并使用Java JDK提供的jarsigner工具对生成的APK文件进行签名。

二. 运行时hook

利用动态二进制插桩技术,在程序运行时动态插入额外代码,改变安卓的网络安全配置行为。类似的hook软件比如frida,在参考资料中有其使用方法, 可以自行查阅

三. 把charles证书装成系统证书

该方法要先root手机,然后直接把证书添加为根证书

这大概是最一劳永逸的方法了,你不是只信任系统证书,不信任用户证书吗?那我就把charles证书装成系统证书,就这么简单粗暴!然而虽然简单粗暴,但方法依然很复杂,你是不是以为root完,把证书往系统证书目录一拷贝就行了?行是行,但是不妥,因为系统证书在system目录,这表示你得将system目录设为可写的,但这个方法实在太粗暴了,以至于安卓的反root算法很容易就检测出来,然后你的手机从此以后就各种幺蛾子了,什么app启动不了啊七七八八的事。

这里还有一种不需要root的方法:

解锁手机 Bootloader
刷入第三方 Recovery(例如 TWRP)
下载官方 Magisk 包,然后通过第三方 Recovery 刷入
下载AlwaysTrustUserCerts.zip (这是一个Magisk模块)
通过Magisk安装上面这个模块
正常途径安装好charles证书(这时候安装,charles证书还在用户证书下)
重启
你会发现charles证书已经自动变成了系统证书
可以看到,抓Android7.0以上手机的https包是比较复杂的,最简便的方法还是使用iphone

 

以上就是所有配置Charles抓包的相关内容,希望能够对大家有所帮助

即使按照以上方法配置了证书信息,有些app还是不能抓包,这是因为部分app使用了SSL Pinning技术,这种情况的解决方式在我的另一篇博客里记录:

手机app抓包https请求信息,解决SSL Pinning验证

 

参考资料:

https://www.jianshu.com/p/393f5e51716e

https://github.com/NVISO-BE/MagiskTrustUserCerts

http://www.oneplusbbs.com/thread-4077732-1-1.html

http://www.oneplusbbs.com/thread-3903166-1-1.html

https://www.imooc.com/article/49265

https://www.jianshu.com/p/310d930dd62f

https://blog.nviso.be/2017/12/22/intercepting-https-traffic-from-apps-on-android-7-using-magisk-burp/

https://www.nccgroup.trust/uk/about-us/newsroom-and-events/blogs/2017/november/bypassing-androids-network-security-configuration/

其他抓包工具:

Wireshark,fiddler