app开发,如何让请求绕开fiddler、Charles等抓包工具

如何做能教我么,我就是想说设备在网络里面设置了代理,但我的某个请求并不想不走代理

我想说我的钱都放在银行里,但是我做金融交易想绕过国家监管

HTTPS就可以了吧

我明白您的意思,狗神的意思我也清楚,即构造一个自己的socket通讯和协议。我现在想了解另外一个问题:如果在iOS设置里面设置了全局的proxy,在我的APP里某个请求不希望走全局proxy进行http请求,不知道有没有办法做到?希望大神指点

理论上可以。自己在socket层模拟http协议

终于找到不走全局proxy答案了,如果使用的是NSURLSession,把NSURLSessionConfiguration的connectionProxyDictionary属性设置成空字典,请求就不会走全局设置的proxy:
NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration ephemeralSessionConfiguration];
configuration.connectionProxyDictionary = @{};

2 Likes

如果仅仅只是不想被fiddler、charles抓包到肉眼可观的详细的http请求,那么使用https不是更简单的方案?或者http请求里面的body自己加密?

https一样能被抓包工具抓包啊,App Store就是例子。body自己加密还得用白盒,系统的加密方法分分钟被逆向

可以可以666

如果使用的是NSURLRequest和NSURLConnection呢?

hook一下你这不就废了

!RemindMe 更新工程代码

这是我的另一个问题,希望自己的某个请求不走全局proxy;发出去的应用不被别人抓包,还是要采用上面说的自己实现协议

公开api没有看到NSURLRequest和NSURLConnection不适用全局代理的,如果你自己开发不想使用NSURLSession,那么你可以使用CFNetwork.framework中CFHTTPStream.h里面的用法

没明白楼主的应用环境,讲道理,IOS本地抓包,你怎么配置都没用,除非你自己写socket吧

通过Charles抓包需要设置代理,只需要检测当前网络状态是否设置了网络代理即可:
iOS中网络请求判断是否设置代理
当然,会误伤到没使用抓包工具的用户

没用的,你还是会被破的

不一一回复了,上面snakeninny已经说了要想绕开,只有自己实现协议,用socket写吧。我说的把NSURLSessionConfiguration的connectionProxyDictionary属性设置成空字典并不能绕开抓包,因为hook仍然能够修改方法参数;我的回复目的只是为了解决某些插件开发hook请求,必须要全局走代理服务器,但一些请求,并不希望走代理,因为走代理速度会变慢。至于jjjjjjjerry1983发的文章,原理是一样的,因为NSURLSession本质就是基于CFNetwork开发的。最后说会被破解,当然什么都会被破解,微软、苹果系统都能被破解,只是时间和人员投入和产出的问题。

socket隧道vpn都可以实现,只是比较麻烦

两种方案:

  1. 通过socket自建请求头。
  2. 通过apple提供的SSL PINNING
1 Like