ZXRequestBlock
安裝
通過CocoaPods安裝
pod 'ZXRequestBlock'
手動導入
- 將ZXRequestBlock拖入項目中。
導入頭文件
#import "ZXRequestBlock.h"
注意
不支持WKWebView!!
使用方法
攔截全局請求
[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,進行一些修改(例如根據(jù)request的url過濾單獨對一些請求的請求體進行修改等)然后再return,達到修改request的目的。
return request;
}];
防代理抓包
禁止網(wǎng)絡代理抓包(開啟后將無法通過網(wǎng)絡代理抓包,通過Thor,Charles,Burp等均無法抓取此App的包,且在代理網(wǎng)絡下App內部請求不受任何影響)
[ZXRequestBlock disableHttpProxy];
允許網(wǎng)絡代理抓包【默認為允許】
[ZXRequestBlock enableHttpProxy];
注意
- 此功能僅可以防止代理抓包,雖然可以屏蔽絕大多數(shù)的抓包方式,但是無法避免如Wireshark這類直接通過網(wǎng)卡抓包的工具,因此若您的請求協(xié)議很重要,請務必對請求進行驗簽或加密,并盡量避免明文聲明AES加密key,詳情可參照【iOS應用安全、安全攻防】hook及越獄的基本防護與檢測(動態(tài)庫注入檢測、hook檢測與防護、越獄檢測、簽名校驗、IDA反編譯分析加密協(xié)議示例)
HTTPDNS
啟用HTTPDNS(將會直接從本地或http://119.29.29.29 進行DNS解析,是一種避免DNS劫持的措施)
[ZXRequestBlock enableHttpDns];
關閉HTTPDNS【默認為關閉】
[ZXRequestBlock disableHttpDns];
禁止/恢復所有網(wǎng)絡請求
禁止所有網(wǎng)絡請求
[ZXRequestBlock cancelAllRequest];
恢復所有網(wǎng)絡請求
[ZXRequestBlock resumeAllRequest];
防抓包Demo演示
ZXRequestBlockDemo1.gif