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