美文网首页为了更好的活着专注iOS开发iOS 开发
[iOS]iOS中网络请求判断是否设置代理

[iOS]iOS中网络请求判断是否设置代理

作者: PlutoMa | 来源:发表于2016-11-24 17:29 被阅读1759次

    额,最近公司的接口让人给通过抓包给破解了,搞不清楚https的证书是怎么泄露的,然后就有了这么个需求,只要是网络设置了代理,那么就禁止一切网络访问,这里记录一下如何判断是否设置了代理。
    需要导入框架CFNetwork
    然后,这个方法是mrc的:需要添加-fno-objc-arc的flag
    代码如下:

    
    + (BOOL)getProxyStatus {
        NSDictionary *proxySettings = NSMakeCollectable([(NSDictionary *)CFNetworkCopySystemProxySettings() autorelease]);
        NSArray *proxies = NSMakeCollectable([(NSArray *)CFNetworkCopyProxiesForURL((CFURLRef)[NSURL URLWithString:@"http://www.google.com"], (CFDictionaryRef)proxySettings) autorelease]);
        NSDictionary *settings = [proxies objectAtIndex:0];
        
        NSLog(@"host=%@", [settings objectForKey:(NSString *)kCFProxyHostNameKey]);
        NSLog(@"port=%@", [settings objectForKey:(NSString *)kCFProxyPortNumberKey]);
        NSLog(@"type=%@", [settings objectForKey:(NSString *)kCFProxyTypeKey]);
        
        if ([[settings objectForKey:(NSString *)kCFProxyTypeKey] isEqualToString:@"kCFProxyTypeNone"])
        {
            //没有设置代理
            return NO;
        }
        else
        {
            //设置代理了
            return YES;
        }
    }
    

    相关文章

      网友评论

      • XRD_太原:检测到设置了代理之后,如何禁止一切网络访问啊?
      • 肾得朕心:下了个vpn app,开启代理 为什么还是获取不到代理信息
        肾得朕心:@honey曦 听说这个类可以获取到networkextension,还没试,你可以看看
        1c29bd907a91:请问问题解决了吗
      • 阿凯永爱:ARC版本

        NSDictionary *proxySettings = (__bridge NSDictionary *)(CFNetworkCopySystemProxySettings());
        NSArray *proxies = (__bridge NSArray *)(CFNetworkCopyProxiesForURL((__bridge CFURLRef _Nonnull)([NSURL URLWithString:@"http://www.baidu.com"]), (__bridge CFDictionaryRef _Nonnull)(proxySettings)));
        NSLog(@"\n%@",proxies);

        NSDictionary *settings = proxies[0];
        NSLog(@"%@",[settings objectForKey:(NSString *)kCFProxyHostNameKey]);
        NSLog(@"%@",[settings objectForKey:(NSString *)kCFProxyPortNumberKey]);
        NSLog(@"%@",[settings objectForKey:(NSString *)kCFProxyTypeKey]);

        if ([[settings objectForKey:(NSString *)kCFProxyTypeKey] isEqualToString:@"kCFProxyTypeNone"])
        {
        NSLog(@"没代理");
        }
        else
        {
        NSLog(@"设置了代理");
        }
        JerryT_T:粘贴过来的改下啊~http://www.baidu.com&;quot后面一个; 什么鬼
        肾得朕心:请问我下了个设置vpn的app,开启代理为什么还是获取不到代理信息
      • 傲骄的南瓜:不错,最近一直在苦恼
      • 杏仁丶:您好,感谢您分享方法;想问一下这个方法的话是vpn和http代理都可以识别出来的是吧?
      • Auditore:能解释下原理吗?NSMakeCollectable这个函数的意义
      • 张梓辰:牛逼了,我的猫
        要做个太阳:我试过了,有的vpn软件可以获取得到,有的vpn软件不可以获取的到
        PlutoMa:@张梓辰 厉害了,我的飞

      本文标题:[iOS]iOS中网络请求判断是否设置代理

      本文链接:https://www.haomeiwen.com/subject/udabpttx.html