开发中,代理、VPN以及手机抓包的一些思考

事情起始于一次在家使用手机测试项目

在家中访问公司的网络,需要在电脑上打开VPN,访问公司的内网

手机抓包,需要电脑上打开Whistle(类似Fiddler、Charles),并且配置手机的代理指向电脑

调试问题时,需要访问谷歌,就需要电脑上打开上外网的代理

实际操作中,由于没有想过这些工具的原理,心里对下面几个问题一直有疑问

为什么Whistle和外网代理不能一起使用,但却可以和VPN共存手机代理连上电脑后,为什么不能使用电脑的外网代理或者VPN

花了一点时间研究下,由于知识有限,这里写一些我的理解。

问题1. 电脑上的代理本质上是个Web代理,只能代理HTTP等一些协议。而我使用的外网代理,虽然包装成一个客户端,但本质还是修改系统的Web代理,这样就解释了为什么Whistle和外网代理不能共存。然而VPN应该是更底层的一种通道,相当于接入了一个内部局域网,所以跟代理不在一个层面,就不存在冲突的问题

问题2. 其实我现在也没明白问题2的场景为什么不行~ 猜测是当手机代理连上电脑,使用的是电脑的网络底层能力,而不涉及使用电脑的代理或VPN等。只是猜测,后面有时间要好好研究清楚。

2022年3月10日 补充:

经过再一次的思考,大概能明白这些工具的原理了

代理通常就是 HTTP(S)代理 和 Socks代理, 区别在于一个工作在 应用层, 一个工作在 会话层。

应用可以自由决定是否使用代理,所以就会出现某些app无法使用代理抓包,或者是控制台需要单独设置代理这些情况

VPN 是把系统接入一个 虚拟网络, 不同的 VPN,实现原理不同。我们公司的 VPN是 SSL VPN,是通过HTTPS实现的 VPN 技术。

在使用代理连接到目标设备 或者是 目标设备共享网络热点的时候,接入是设备并不会使用代理或VPN,所以设置共享WIFI来实现

PS:感觉还是没有彻底搞懂,有时间再做研究~