iOS中的代理检测

时间:2014-08-11 06:58:23

标签: ios proxy

我想以编程方式找出用户是否在iOS中使用代理。有没有办法用新api(ios 7或8)检测它? 此外,是否有可能在不知不觉中找出用户是否有代理?

2 个答案:

答案 0 :(得分:1)

您只需在CFDictionaryRef回复中找到代理。

CFDictionaryRef dicRef = CFNetworkCopySystemProxySettings();

如果启用了代理,那么您可以像这样解析它。

 const CFStringRef proxyCFstr = (const CFStringRef)CFDictionaryGetValue(dicRef,
                                                                           (const void*)kCFNetworkProxiesHTTPProxy);

基于此,您可以检测是否启用了代理。

答案 1 :(得分:1)

默认情况下,基于NSStream的套接字不会检测系统代理设置,如果您尝试在Charles Proxy中调试基于NSStream的SSL流量,则这非常不方便。要设置流的代理设置,我只需使用:

NSInputStream  *inStream;
NSOutputStream *outStream;

//...assign the streams...

NSDictionary    *proxySettings = CFBridgingRelease(CFNetworkCopySystemProxySettings());
[inStream  setProperty:proxySettings forKey:NSStreamSOCKSProxyConfigurationKey];
[outStream setProperty:proxySettings forKey:NSStreamSOCKSProxyConfigurationKey];