charles抓取Android包注意事项
记录在win10系统上charles正常使用之前遇到的问题,以便日后忘记。
操作步骤:
前提:保证手机和电脑在同一局域网下。
1. 下载安装charles,地址:https://www.charlesproxy.com/download/
2. 配置charles
点击 Proxy -> Proxy Settings 设置其端口号,默认端口号为8888,并将Port下面的"Enable transparent HTTP proxying"勾上,如下图。此处端口号为8887,是由于调试时发现端口号8888已被其它程序占用。
图1 charles port
3. 查看电脑IP
电脑左上角输入cmd,调出命令提示符,然后输入config. 查看电脑IP。如下图。
图2 电脑IP
4. 配置手机
设置手机wifi的代理。代理选择"手动", 服务器主机名填写上面的电脑IP(图2),服务器端口号填写charles的Port端口号(图1),然后保存。此时,charles会弹出"allow"(但我没遇到过),所以我需要手动在charles中将我的手机IP加进去。
点击charles工具的 "Proxy" -> "Allow Control Settings" ,加入允许的IP范围。如下图。说明: 192.168.0.0/24是允许所有的192.168.0.*的IP连接。
图3 Allow Control Settings
测试结果:
成功: 可以在charles抓到Android手机上的包。
失败:
1. 任何包(包括Android手机和电脑)都抓不到。
解决办法: 点击win10右下角"网络设置" -> "代理" -> "手动设置代理",查看"使用代理服务器"按钮是否有正常开启,地址是否是127.0.0.1,端口号是否和charles工具中的Port一致。
2. charles可以抓到电脑上面的包,但抓不到手机上面的包,并且手机无法上网。(自己碰到了此类问题,费了一些时间找原因)
查找原因:手机和电脑互ping,看是否能够ping通。输入cmd,打开命令提示符。
1) 输入 ping 192.168.1.101 (比如192.168.1.101是手机IP),发现电脑可以正常ping通手机。
2) 输入adb shell, 进入到Android手机终端,输入 ping 192.168.1.111 (假设192.168.1.111是电脑IP),发现无法ping通。
如果手机无法ping通电脑IP,那我就去查看电脑防火墙是否有没关闭。之前其实我是关闭了win10的windows防火墙的,后来还是无法ping通,才发现win10系统还有一个叫"迈克菲防火墙",将两个防火墙都关闭就好了。然后测试发现手机和电脑可以互ping。此时Android手机可以访问网络,并且charles可以抓到android中的包。
查找原因:手机和电脑互ping,看是否能够ping通。输入cmd,打开命令提示符。
1) 输入 ping 192.168.1.101 (比如192.168.1.101是手机IP),发现电脑可以正常ping通手机。
2) 输入adb shell, 进入到Android手机终端,输入 ping 192.168.1.111 (假设192.168.1.111是电脑IP),发现无法ping通。
如果手机无法ping通电脑IP,那我就去查看电脑防火墙是否有没关闭。之前其实我是关闭了win10的windows防火墙的,后来还是无法ping通,才发现win10系统还有一个叫"迈克菲防火墙",将两个防火墙都关闭就好了。然后测试发现手机和电脑可以互ping。此时Android手机可以访问网络,并且charles可以抓到android中的包。