以macOS为例,如何使用Charles监听,拦截和修改本地的网络通信

1 原理

首先,你必须明白Charles工作的大致原理。

  • 在本机启动一个网络代理(proxy),所有对外的通信都必须走这个代理。
  • Charles监听经过这个代理的通信。
  • 通过设置相关的断点,用户可以拦截特定的请求或回复。
  • 拦截之后,用户可以编辑这些请求或回复。

2 Steps

2.0 enable SSL in Charles (此步仅限于抓取HTTPS通信)

参见第1个回答

2.1在本机设置网络代理

通过System Preferences - Network入口,设置网络代理。
你可以分别设置HTTP代理和HTTP代理,这两个代理分别走HTTP通信和HTTPS通信。
在这里插入图片描述

在这里插入图片描述

2.2 Charles监听通过代理的网络通信

Charles顶部工具栏 - Proxy - 勾上macOS Proxy
在这里插入图片描述
此时,你如果刷新http://10.37.129.2:8081/MSTR/servlet/mstrWebAdmin,Charles的侧边栏上就会出现监听到的通信。
8081是web服务器,也就是通信终点的端口。之前设置的8087是代理,也就是通信中转的端口。两者是无关的。
在这里插入图片描述

2.3 拦截特定的请求或回复

开启断点: Proxy - Enable Breakpoints
在这里插入图片描述
设置断点:Proxy - Breakpoint Settings…
在这里插入图片描述
点击以修改断点规则:我这里勾选上了Request,说明我只需要拦截request。
设置example1
在这里插入图片描述
设置example2
在这里插入图片描述

此时Charles可以拦截以http://10.37.129.2:8081/MSTR/servlet/mstrWebAdmin为目的地的通信了。

2.4 编辑(edit)返回(request)和请求(response)

再次刷新http://10.37.129.2:8081/MSTR/servlet/mstrWebAdmin
就可以看到被拦截的请求。
在这里插入图片描述
点击Edit Request,就可以修改通信请求中Name和Value
在这里插入图片描述
修改后,可以点击Excute让请求继续,或者放弃,或者取消。
在这里插入图片描述
以上。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章