Using Charles debugging through Socks

Pre

Charles 除了经典的通过http执行代理debug之外还可以使用sock,两种方式的区别可以看Charles官方的说明,而实际使用中明显的区别就是有些http下遇到的无法抓包情况socks下可以正常执行。

Solution

1. 使用iOS自带的代理

使用iOS wifi 自带的代理设置一般只能设置http类型
如果想要socks类型可以使用自动代理,可以利用自动代理模式

1. 1. 自建Pac文件
1
2
charles_socks.pac
function FindProxyForURL(url, host) { return 'SOCKS 192.168.199.105:8881; SOCKS5 192.168.199.105:8881'; }
1. 2. 本地启动一个服务器来提供pac文件
1
2
cd pathToPacFile
python -m SimpleHTTPServer
1. 3. 在wifi代理里面选半自动代理,填入pac文件地址

http://127.0.0.1:8000/pathToPacFile
但是经测试如果这个socks使用时仍有问题,他跟http一样会在某些时候卡住无法继续,也许是iOS自带的socks支持程度与charles的不同。

2. 使用Socks Proxy Client

目前发现的能提供正常可用的sock5连接iOS客户端有以下几个,当然这些国区AppStore都没有。

1
2
3
ShadowRocket(paid)
Surge(paid)
Brook(a free & open-source one)