Charles简单使用(转发手机请求)
不错的文章:Charles工具使用教程,以及注意事项
使用charles前记得将charlse设置成系统级代理
做手机端前端页面的开发,开发过程中,需要在手机端能看到相应的效果,怎么办?
一般在PC端开发的时候,我们都会起一个服务(比如webpack的的服务),然后在本地访问相应的url进行访问,进而进行预览并调试。手机端如何也能访问得到这个PC端自己的url呢?Charles就派上用场了。
拦截手机请求(http请求)
Charles 通常用来截取本地上的网络封包,但是当我们需要时,我们也可以用来截取其它设备上的网络请求。
手机和PC得在同一个局域网下。这边实现的是转发http请求,https请求由于是加密的,得在Charles做代理,并在手机上安装证书,这个后面再说。
在PC端的Charles上设置:
要截取 iPhone 上的网络请求,我们首先需要将 Charles 的代理功能打开。在 Charles 的菜单栏上选择 “Proxy”–>“Proxy Settings”,填入代理端口 8888,并且勾上 “Enable transparent HTTP proxying” 就完成了在 Charles 上的设置。如下图所示:
在手机上设置:
首先我们需要获取 Charles 运行所在电脑的 IP 地址,Charles 的顶部菜单的 “Help”–>“Local IP Address”,即可在弹出的对话框中看到 IP 地址,如下图所示:(mac系统也可以在终端输入ifgonfig en0
来查看,window的命令是ipconfig
)
在 iPhone 的 “ 设置 ”–>“ 无线局域网 ” 中,可以看到当前连接的 wifi 名,通过点击右边的详情键,可以看到当前连接上的 wifi 的详细信息,包括 IP 地址,子网掩码等信息。在其最底部有「HTTP 代理」一项,我们将其切换成手动,然后填上 Charles 运行所在的电脑的 IP,以及端口号 8888,如下图所示:
安卓手机wifi的”代理“那一块可能还有一个”IP设置“,保留默认的DHCP就行。另外那个主机名填的的是PC的ip地址
设置好之后,我们打开 iPhone 上的任意需要网络通讯的程序,就可以看到 Charles 弹出 iPhone 请求连接的确认菜单(如下图所示),点击 “Allow” 即可完成设置。
至此,手机上点击什么需要连接网络的请求都会被PC端的这个Charles给拦截到,这样,手机端随便访问个自己写的url,Charles再将这个url的请转发到PC端自己起的那个服务的url就行,这样手机端就能访问到PC端的那个url的内容了。
补充
Charles的Tools->Map Remote里面有所有已经设置的请求转发的条目
如果想拦截某个域名下的所有请求,将path栏放空就行: