Windows使用Charles对模拟器/真机进行抓包 问题记录
准备工作
1. win10上安装Charles -->下载地址 (注:官方版本如果不付费的每30分钟就会断开)
2. 打开Charles进行设置
- PC端
- Proxy-> Windows Proxy 这个去掉勾选,这样就不会整个电脑都走代理了
- Proxy-> Proxy Settings -> HTTP Proxy ->Port 设置代理的端口号如8888
- Proxy-> Proxy Settings -> SSL Proxying -> Enable SSL Proxying 这个要勾选,使得Charles拦截和代理SSL请求
- Proxy-> SSL Proxying Settings -> Include -> Location 在这个框下点击ADD,添加让Charles监听的SSL站点,使用*号作为通配符匹配任意站点。
- 点击ok
- 模拟器端(Android Studios的模拟器 Android 6 版本)
- 点击右侧的 "...",进入设置页面
- 点击左侧边栏的Settings
- 点击右侧界面的Proxy标签,进入代理设置页面
- 点中Manual proxy configuration
- Host name填入电脑ip地址,Port number填入在Charles设置的端口号,如8888
- 点击APPLY
- 打开模拟器中的浏览器输入cls.pro/ssl,并按照提示下载证书,之后会在电脑Charles端弹出一个提示,点击allow就好了
- 真机可能需要在 设置->安全->从SD卡安装证书 选择下载的证书手动安装,之后在 信任的凭据->用户 下可以看到安装的证书
遇到的坑
- 提示SSL Proxying not enabled for this host: enable in Proxy Settings, SSL locations
解决方案:
把目的ip添加到Proxy-> SSL Proxying Settings -> Include -> Location下(这一点很奇怪,这是网上查的方法,我设置之后也少了很多红色unknown,但是*号应该是包含所有host地址的,不知道为什么还需要手动添加host) - 手机端设备设置代理之后,访问cls.pro/ssl失败,提示超时,手机无法上网(已确认电脑与手机在同一网段内)
解决方案:
关闭Windows防火墙。控制面板->更新和安全->windows安全中心->防火墙和网络保护->把网络的防火墙给关掉(可能需要重启,之前charles一直没有弹出allow的提示框,重启之后才弹出) - 出现蓝色的unknown
解决方案:
设置DNS - 提示You may need to configure your browser or application to trust the Charles Root Certificate. See SSL Help...
解决方案:
重新下载安装证书 - 手机访问cls/pro,提示Name lookupfailed for remote Charles failed to resolve the name of the remote host into an IP address
解决方案:
查看Charles -> Help -> SSL proxying -> install ……
弹出提示框,看到IP地址与手机端代理设置不一致,但这个地址不是电脑本地获得的ip地址
查看Charles -> Help -> local ip address,发现当前Charles识别到多个ip地址,其中包括了虚拟机的地址,且排在了第一位
在电脑端控制面板\网络和 Internet\网络连接,把虚拟机的网络设备禁用