iOS防抓包

当未开启wifi设置中的HTTP代理以及VPN时.网络设置如下所示
在这里插入图片描述

当我们开启了设置中的HTTP代理时
在这里插入图片描述

当我们开启UU加速器时,多了一个utun0.这个是VPN隧道协议.
在这里插入图片描述

当我们VPN和HTTP代理同时开启时

在这里插入图片描述

检测是否开启了VPN

我们可以看看除了en0之外还有没有其他的key

- (BOOL)checkHasVPN {
    BOOL flag = NO;
    NSString *version = [UIDevice currentDevice].systemVersion;
    if (version.doubleValue >= 9.0) {// 目前测试了iOS 9 - iOS 14.以下的设备实在是找不到...
        NSDictionary *dict = CFBridgingRelease(CFNetworkCopySystemProxySettings());
        NSArray *keys = [dict[@"__SCOPED__"] allKeys];
        for (NSString *key in keys) {
        // 可以用这里的代码检测,这里的中判断的字符串是VPN的协议,其实也不太全,或者用下面的不等于en0判断.
//            if ([key rangeOfString:@"tap"].location != NSNotFound ||
//                [key rangeOfString:@"tun"].location != NSNotFound ||
//                [key rangeOfString:@"ipsec"].location != NSNotFound ||
//                [key rangeOfString:@"ppp"].location != NSNotFound){
//                flag = YES;
//                break;
//            }
            if (![key isEqualToString:@"en0"]) {
                flag = YES;
            }
        }
    }
    return flag;
}

检测是否开启了设置->无线局域网->HTTP代理

我们可以看en0的网络有没有HTTPProxy或者是HTTPSProxy

- (BOOL)checkHasHTTPProxy {
    BOOL flag = NO;
    NSString *version = [UIDevice currentDevice].systemVersion;
    if (version.doubleValue >= 9.0) {// 目前测试了iOS 9 - iOS 14.以下的设备实在是找不到...
        NSDictionary *dict = CFBridgingRelease(CFNetworkCopySystemProxySettings());
        NSArray *keys = [dict[@"__SCOPED__"] allKeys];
        for (NSString *key in keys) {
            if ([key isEqualToString:@"en0"]) {// 非本地端口
                NSDictionary *keyDic = [[dict objectForKey:@"__SCOPED__"] objectForKey:@"en0"];
                NSString *HTTPProxy = [keyDic objectForKey:@"HTTPProxy"];
                NSString *HTTPSProxy = [keyDic objectForKey:@"HTTPSProxy"];
                BOOL hasHTTPProxy = ![HTTPProxy isEqualToString:@""] && HTTPProxy != nil;
                BOOL hasHTTPSProxy = ![HTTPSProxy isEqualToString:@""] && HTTPSProxy != nil;
                if (hasHTTPProxy || hasHTTPSProxy) {
                    flag = YES;
                }
            }
        }
    }
    return flag;
}

后记

如果仅仅是想防止HTTP抓包.时候上面的HTTP代理判断一下是否开启即可.对于有些手机上通过VPN软件形式本地抓包的软件类似Stream就需要使用上面两种方法一起来禁止抓包

猜你喜欢

转载自blog.csdn.net/qq_18683985/article/details/108238125
今日推荐