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就需要使用上面两种方法一起来禁止抓包

### 使用Charles代理工具抓取iOS设备上的HTTP/HTTPS流量 #### 设置Charles作为Wi-Fi网络中的代理服务器 为了使iOS设备通过Charles进行网络流量捕获,需先配置iOS设备连接到与安装有Charles软件的电脑相同的Wi-Fi网络。之后,在iPhone上进入`设置`->`无线局域网`,选择当前使用的Wi-Fi并手动输入HTTP代理服务器地址,即运行Charles机器的IP地址以及指定端口(默认为8888),确保启用了透明HTTP代理选项[^5]。 #### 安装Charles根证书至移动装置 由于HTTPS采用了加密传输机制,因此要查看具体的请求详情还需让iOS信任Charles自签名颁发的SSL证书。具体做法是从Charles菜单栏依次点击`Help` -> `SSL Proxying` -> `Install Charles Root Certificate on a Mobile Device...`来获取安装指引链接,并按照指示完成证书部署过程[^2]。 #### 配置Charles以拦截特定域名下的HTTPS通信 当一切准备就绪后,回到Charles界面中开启SSL代理监听功能——同样是在顶部菜单找到`Proxy`项下拉列表里的`SSL Proxying Settings…`入口;接着添加想要监控的目标主机名或通配符表达式,比如*.example.com表示匹配该顶级域名及其子级的所有站点资源交互记录[^3]。 #### 开始监测会话活动 现在可以尝试访问一些网页或者启动应用程序触发实际的数据交换行为,此时应当能在Charles左侧边栏看到实时更新的日志条目罗列出来。双击任意一项可深入探究其内部结构,包括但限于发起方法(Method)、路径(Path)、头部(Header)参数携带的内容体(Payload),对于POST类型的提交还可能涉及到表单(Form Data)解析等更多细节展示[^1]。 ```bash # 如果遇到某些特殊情况无法正常捕捉数据流, # 可能是因为目标App实施了额外的安全护措施阻止中间人攻击(MITM), # 此时则需要查阅官方文档寻求解决方案或是考虑其他替代方案。 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值