iOS HTTP DNS 방안 연구

Github 주소
디자인:
우선, 로 컬 에서 초기 DNS Json 파일 을 저장 한 다음 에 시기 에 따라 PS: 이 부분 을 업데이트 하고 폐지 합 니 다. 이 부분 은 실현 되 지 않 았 습 니 다.
쓰다
직접 교체 IP
NSString *originUrlString = [request.URL absoluteString];
    NSString *originHostString = [request.URL host];
    NSRange hostRange = [originUrlString rangeOfString:originHostString];
    if (hostRange.location != NSNotFound) { 
         NSString *ip = [[CustomDNSManager sharedClient] requestIPWithHost:originHostString];
    }

다음은 요청 만 차단 하고 요청 은 수정 하지 않 습 니 다.
수정 하려 면 RichURLSessionProtocol 의 canonicalRequestForRequest 방법 을 수정 하 십시오.
전면 차단
단독 세 션 과 AFN 은 포함 되 지 않 습 니 다.
 -(BOOL)application:(UIApplication *)application 
 didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    [NSURLProtocol registerClass:[RichURLSessionProtocol class]];
}

UIWebView 차단
동안 인터페이스 요청 도 차단 페이지 가 초기 화 될 때
- (void)viewDidLoad {
    [super viewDidLoad];
    [NSURLProtocol registerClass:[RichURLSessionProtocol class]];
}

페이지 소각
- (void)dealloc {
    
    [NSURLProtocol unregisterClass:[RichURLSessionProtocol class]];
}

AFN 차단 또는 NSURLSession Configuration
    NSURLSessionConfiguration *config = [NSURLSessionConfiguration defaultSessionConfiguration];
    NSArray *protocolClasses = @[[RichURLSessionProtocol class]];
    config.protocolClasses = protocolClasses;
    AFHTTPSessionManager *manage = [[AFHTTPSessionManager alloc] initWithSessionConfiguration:config];

WKWebview
  • [Github:NSURLProtocol-WebKitSupport] (https://github.com/Yeatse/NSURLProtocol-WebKitSupport)

  • 참고 문헌:
  • [아마도 가장 완전한 iOS 엔 드 HttpDns 통합 방안 일 것 입 니 다] (https://www.jianshu.com/p/cd4c1bf1fd5f)
  • NSURLPtotocol 은 AFN, WKWebView
  • 를 차단 할 수 없습니다.

    좋은 웹페이지 즐겨찾기