我近期将把我的博文迁移至GitHub,欢迎访问:https://achaozju.github.io/


文章目录

  • 我近期将把我的博文迁移至GitHub,欢迎访问:https://achaozju.github.io/
  • 1 原理
  • 2 Steps
  • 2.0 enable SSL in Charles (此步仅限于抓取HTTPS通信)
  • 2.1在本机设置网络代理
  • 2.2 Charles监听通过代理的网络通信
  • 2.3 拦截特定的请求或回复
  • 2.4 编辑(edit)返回(request)和请求(response)


1 原理

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

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

2 Steps

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

参见第1个回答

2.1在本机设置网络代理

通过System Preferences - Network入口,设置网络代理。

你可以分别设置HTTP代理和HTTP代理,这两个代理分别走HTTP通信和HTTPS通信。

IOS 监听属性更改 苹果监听设置_IOS 监听属性更改

IOS 监听属性更改 苹果监听设置_network_02

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

Charles顶部工具栏 - Proxy - 勾上macOS Proxy

IOS 监听属性更改 苹果监听设置_HTTP_03


此时,你如果刷新http://10.37.129.2:8081/MSTR/servlet/mstrWebAdmin,Charles的侧边栏上就会出现监听到的通信。

8081是web服务器,也就是通信终点的端口。之前设置的8087是代理,也就是通信中转的端口。两者是无关的。

IOS 监听属性更改 苹果监听设置_HTTP_04

2.3 拦截特定的请求或回复

开启断点: Proxy - Enable Breakpoints

IOS 监听属性更改 苹果监听设置_charles_05


设置断点:Proxy - Breakpoint Settings…

IOS 监听属性更改 苹果监听设置_计算机网络_06


点击以修改断点规则:我这里勾选上了Request,说明我只需要拦截request。

设置example1

IOS 监听属性更改 苹果监听设置_IOS 监听属性更改_07


设置example2

IOS 监听属性更改 苹果监听设置_HTTP_08

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

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

再次刷新http://10.37.129.2:8081/MSTR/servlet/mstrWebAdmin

就可以看到被拦截的请求。

IOS 监听属性更改 苹果监听设置_network_09


点击Edit Request,就可以修改通信请求中Name和Value

IOS 监听属性更改 苹果监听设置_HTTP_10


修改后,可以点击Excute让请求继续,或者放弃,或者取消。

IOS 监听属性更改 苹果监听设置_charles_11


以上。