iOS 可以几行代码绕过系统代理, 为什么大家都不这么做?
昨天经过测试, 发现这样的代码, 可以绕过系统代理:
let sessionConfig = URLSessionConfiguration.default var proxyDict = [AnyHashable : Any]() sessionConfig.connectionProxyDictionary = proxyDict // 主要是这一行 let session = URLSession.init(configuration: sessionConfig, delegate: nil, delegateQueue: OperationQueue.current) // 网络请求
普通的抓包工具(应用层抓包)是抓取不到请求的, 只有 wireshark 这种作用在上层协议的工具才可以.
为什么要绕过系统代理? 可以避免 MITM, 手机上现在很多软件可以 hack 其他软件, 比如圈 X, 在收到网络请求时候可以对请求进行更改, 或者修改 body 信息.
既然开发者可以一行代码来 bypass 绕过系统代理, 为什么不做呢? 猜测如下两点:
- 网络请求不使用 URLSession, 用其他的网络请求框架比如 Alamofire 没有这功能
- 软件没必要绕过系统代理, 有些场景是要考虑系统代理的
我不是 iOS 开发者, 目前只能猜测以上两条. 希望专业的朋友指正.
延伸自这个帖子: /t/715477