怎么配置抓取请求?
首先,需要将 Charles 的代理功能打开:在 Charles 的菜单栏上选择 Proxy -> Proxy Settings,填入代理端口 8888,并且勾上 “Enable transparent HTTP proxying” 就完成了在 Charles 上的设置。如下图所示:
还需要在SSL Proxying Settings里设置我们需要监听的app域名:
然后,我们需要获取 Charles 运行所在电脑的 IP 地址,Charles 的顶部菜单的 Help -> Local IP Address,即可在弹出的对话框中看到 IP 地址,如下图所示:
接着,将手机上的网络手动设置代理,服务器主机名就是上一步中获得的ip地址,端口号为第一步里的端口号。
设置好之后,我们打开手机上任意程序,就可以看到 Charles 弹出手机请求连接的确认菜单,点击 “Allow” 即可完成设置。
至此,便可以抓取移动端上的http请求。
如何抓取https请求呢?
首先,我们需要安装证书:点击 Charles 的顶部菜单,选择 Help -> SSL Proxying -> Install Charles Root Certificate on a Mobile Device or Remote Browser。点击之后会出现如图所示弹窗:
接着,将移动端设置代理后,打开浏览器,输入上图红线标示的地址,直接访问,就可以在移动端下载证书了。下载安装证书之后,便可以抓取https请求了。
需要注意的是,在苹果机上下载证书之后,需要到 设置—>通用—>关于本机—>证书信任设置 里,打开对刚才所下载证书的信任才行。
有时候关闭charles之后,网页也打不开,怎么办?
需要我们手动关闭电脑的代理:
怎么只抓取移动端的请求而不抓取电脑的请求
打开Charles,Proxy—>windows proxy (如果是mac,则是 macOS proxy)去除勾选,即可满足只抓包手机端,不抓包电脑端数据
这样打开Charles抓包时,电脑端就可以正常上网了,手机端还能正常抓包
参考链接:http://blog.devtang.com/2015/11/14/charles-introduction、https://www.cnblogs.com/NuoyiHan/p/15711683.html
为什么有些请求抓不到?
可能是因为 recording setting里面限制了一些抓取的逻辑