美文网首页
Charles抓不到配置正确的接口(iOS)

Charles抓不到配置正确的接口(iOS)

作者: 强子ly | 来源:发表于2023-12-05 17:17 被阅读0次

    前言

    今天这事儿很可乐,干了8年开发,自认为对Charles用的不说头头是道,也是炉火纯青了吧,18年写的那篇《关于https抓包那点事》 简书也有几十个点赞,今天这个问题确实第一次遇到

    问题

    在其他部门的项目上,配合server接口新增一个字段,遇到问题不想去跑项目了,想抓包看看,结果Charles里面居然没有对应的url列表。(而且很奇怪的就是ReactNative包里面能抓,原生的不能抓)

    排查了Charles版本、证书、网络ip等等,还是没解决,刚好看到一片文章 iOS小技能:APP 不走全局proxy的方案(隧道APP的请求接口,一些自己特殊接口不走隧道),又填补了一个知识盲区

    空的Charles列表

    1、核心

    NSURLSessionConfiguration 的 connectionProxyDictionary 属性设置成空字典,请求就不会走全局设置的proxy,也就是Charles列表都不会显示抓包的数据

    NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
    configuration.connectionProxyDictionary = @{};
    ...
    

    2、调试优化

    • 2.1、测试环境可抓包:采用debug编译配置
    NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
    
    #ifdef DEBUG
    configuration.connectionProxyDictionary = @{};
    #endif
    
    • 2.2、一劳永逸:搞两个AFHTTPSessionManager,结合server搞一个白名单
    • 白名单里面的url走_sessionManager
    • 非白名单里面的url走_nonProxySessionManager
    @interface XYNetworkProxy ()
    {
        AFHTTPSessionManager *_sessionManager;
        AFHTTPSessionManager *_nonProxySessionManager;
        ....
    }
    
    @end
    
    - (void)initSessionManager {
        _sessionManager = [[AFHTTPSessionManager alloc] initWithBaseURL:nil sessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]];
    
        NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
        configuration.connectionProxyDictionary = @{}; // 设置后不走代理
        _nonProxySessionManager = [[AFHTTPSessionManager alloc] initWithBaseURL:nil sessionConfiguration:configuration];
    }
    
    - (AFHTTPSessionManager *)sessionManager {
        // 白名单内部的url走_sessionManager
        if (self.whitelist.count > 0 && [self.whitelist containsObject:url.host]) {
            return _sessionManager;
        }
        return _nonProxySessionManager;
    }
    

    相关文章

      网友评论

          本文标题:Charles抓不到配置正确的接口(iOS)

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