實現iOS應用底層所有網絡請求攔截(如ajax請求攔截),包含http-dns解決方法,有效防止DNS劫持,用於分析http,https請求,禁用/允許代理,防抓包
用到第三方庫 ZXRequestBlock
1,安裝
通過CocoaPods安裝
pod 'ZXRequestBlock'
手動導入
將ZXRequestBlock拖入項目中。
導入頭文件
#import "ZXRequestBlock.h"
使用方法
攔截全局請求
[ZXRequestBlock handleRequest:^NSURLRequest *(NSURLRequest *request) { //攔截回調在異步線程 NSLog(@"攔截到請求-%@",request); dispatch_async(dispatch_get_main_queue(), ^{ self.blockTv.text = [self.blockTv.text stringByAppendingString:[NSString stringWithFormat:@"攔截到請求--%@\n",request]]; }); //在這里可以將request賦值給可變的NSURLRequest,進行一些修改(例如根據request的url過濾單獨對一些請求的請求體進行修改等)然后再return,達到修改request的目的。 return request; }];
禁止網絡代理抓包(開啟后將無法通過網絡代理抓包,通過Thor,Charles,Burp等均無法抓取此App的包,且在代理網絡下App內部請求不受任何影響)
[ZXRequestBlock disableHttpProxy];
允許網絡代理抓包【默認為允許】
[ZXRequestBlock enableHttpProxy];
啟用HTTPDNS(將會直接從本地或http://119.29.29.29 進行DNS解析,是一種避免DNS劫持的措施)
[ZXRequestBlock enableHttpDns];
關閉HTTPDNS【默認為關閉】
[ZXRequestBlock disableHttpDns];
禁止所有網絡請求
[ZXRequestBlock cancelAllRequest];
恢復所有網絡請求
[ZXRequestBlock resumeAllRequest];
