You need to enable JavaScript to run this app.
导航

验证 HTTPDNS 解析是否生效

最近更新时间2024.04.16 20:11:58

首次发布时间2024.02.20 14:59:57

本文档介绍了在集成 iOS SDK 后,如何验证 HTTPDNS 解析是否生效。
您可以通过查看 SDK 日志的方法验证 HTTPDNS 解析是否生效。

操作步骤

  1. 在初始化 SDK 时调用 setHttpDnsMonitorBlock 方法设置监控回调。

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
    
       ...
    
       [[TTDnsResolver shareInstance] setHttpDnsMonitorBlock:^(NSDictionary* json, NSString* logtype) {
           [TTDnsSdkConfig sharedInstance].getMonitorBlock(json, logtype);
       }];
    }
    
  2. 自行实现监控回调。原生 NSURLProtocol 集成方案、WKWebView 集成方案和自定义 NSURLProtocol 集成方案的监控回调实现有差异。

    - (Monitorblock)getMonitorBlock {
        Monitorblock block = ^(NSDictionary* json, NSString* logType) {
            // 原生 NSURLProtocol 集成方案和 WKWebView 集成方案的监控回调
            if (self.useMnet) {
                NSString* dataJsonStr = json[@"data"];
                NSData* dataData = [dataJsonStr dataUsingEncoding:NSUTF8StringEncoding];
                NSDictionary* dataDict = [NSJSONSerialization JSONObjectWithData:dataData options:NSJSONReadingMutableContainers error:nil];
                NSString* firstIp = dataDict[@"dns"][@"address_list"][0];
                int source = [dataDict[@"dns"][@"source"] intValue];
                [TTViewController logOutput:[NSString stringWithFormat:@"monitor log: log type: %@\nfirst IP is %@,\nsource is %d", logType, firstIp, source]
                                    isNSLog:YES
                                isLogWindow:YES];
            } 
            // 自定义 NSURLProtocol 集成方案的监控回调
            else {
                NSData* jsonData = [NSJSONSerialization dataWithJSONObject:json options:0 error:0];
                NSString* dataStr = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
                NSLog(@"monitor log: log type: %@,message: %@, ", logType, dataStr);
            }
        };
        return block;
    }
    

例如,下面的日志说明 HTTPDNS 解析生效。

request success
200
Optional("<NSHTTPURLResponse: 0x6000008b0560> { URL: https://www.douyin.com/ } { Status Code: 200, Headers {\n    \"Content-Encoding\" =     (\n        br\n    );\n    \"Content-Type\" =     (\n        \"text/html\"\n    );\n    Date =     (\n        \"Mon, 19 Feb 2024 10:35:22 GMT\"\n    );\n    Server =     (\n        Tengine\n    );\n    \"Strict-Transport-Security\" =     (\n        \"max-age=31536000; includeSubDomains; preload\"\n    );\n    Vary =     (\n        \"Accept-Encoding\"\n    );\n    Via =     (\n        \"live6.cn622[74,0]\"\n    );\n    eagleid =     (\n        8be3e62a17083389226378096e\n    );\n    \"server-timing\" =     (\n        \"inner; dur=32, tt_agw; dur=19\",\n        \"cdn-cache;desc=MISS,edge;dur=0,origin;dur=74\"\n    );\n    \"timing-allow-origin\" =     (\n        \"*\"\n    );\n    \"tt_stable\" =     (\n        1\n    );\n    \"x-agw-info\" =     (\n        \"k-HDB7Wk8En_IJOj_xGEjw4uNR_KxttVV9ne79KdD_guckpioEU80NNONl7zzbRwlS9tGHUfmpl5DLCrbyUxX99-7uN5mb54sHCMDbhepOJub2Di5an4Od0zMOVCZJ0Q8-RNrZfQukdyHNSoE2l1Xoe2fiA=\"\n    );\n    \"x-tt-logid\" =     (\n        2024021918352223412BC492F09306E817\n    );\n    \"x-tt-trace-host\" =     (\n        01b7017dff4ce0f406a999452065523f2eeba9e740373653184752922b0275ddb5a3b8f863347f62661a7b49110bf3c462717df38821032b585e7ae47e70e86d0e6ba12bc05a57bfc5e44ad691f47a77a5ddfdde18a83abe70da6574f7ed4dbc83\n    );\n    \"x-tt-trace-id\" =     (\n        \"00-24021918352223412BC492F09306E817-7196BE6E024F2DEA-00\"\n    );\n    \"x-tt-trace-tag\" =     (\n        \"id=03;cdn-cache=miss;type=dyn\"\n    );\n} }")