ZXRequestBlock

实现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];

禁用代理使用的做法很简单,设置 NSURLSessionConfiguration的connectionProxyDictionary这个属性为空字典即可。

看下官方文档,默认为NULL表示使用系统设置,设置一个空字典后,系统的设置就不生效了,此时通过Thor,Charles,Burp等工具就无法抓包了

This property controls which proxy tasks within sessions based on this configuration use when connecting to remote hosts.
The default value is NULL, which means that tasks use the default system settings.

此属性控制在连接到远程主机时,基于此配置的会话中使用哪些代理任务。

默认值为NULL,这意味着任务使用默认的系统设置。

NSString* proxyHost =  @"192.168.12.23";//@"myProxyHost.com";
NSNumber* proxyPort = [NSNumber numberWithInt: 12345];// 创建一个代理服务器,包括HTTP或HTTPS代理,当然还可以添加SOCKS,FTP,RTSP等
NSDictionary *proxyDict = @{// 注意,上下的key是不一样的,上面的是HTTP协议,下面的是对HTTPS协议(NSString *)kCFNetworkProxiesHTTPEnable  : [NSNumber numberWithInt:1],(NSString *)kCFNetworkProxiesHTTPProxy: proxyHost,(NSString *)kCFNetworkProxiesHTTPProxyPort: proxyPort,(NSString *)kCFNetworkProxiesHTTPSEnable : [NSNumber numberWithInt:1],(NSString *)kCFNetworkProxiesHTTPSProxy: proxyHost,(NSString *)kCFNetworkProxiesHTTPSProxyPort: proxyPort,
};NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration ephemeralSessionConfiguration];
// 设置代理
configuration.connectionProxyDictionary = proxyDict;// 禁止代理
configuration.connectionProxyDictionary = @{};

connectionProxyDictionary 笔记 - 简书
iOS系统抓包入门实践之短链_哈里哈气的博客-CSDN博客_ssl_ctx_set_custom_verify
iOS App 通过代理服务器访问网络 - 简书
​​​​​​​


启用HTTPDNS(将会直接从本地或http://119.29.29.29 进行DNS解析,是一种避免DNS劫持的措施)

[ZXRequestBlock enableHttpDns];

关闭HTTPDNS【默认为关闭】

[ZXRequestBlock disableHttpDns];

禁止所有网络请求

[ZXRequestBlock cancelAllRequest];

恢复所有网络请求

[ZXRequestBlock resumeAllRequest];

https://github.com/SmileZXLee/ZXRequestBlock

ios开发防止App被抓包相关推荐

  1. ios开发防止App被抓包(一句话实现iOS应用底层所有网络请求拦截(如ajax请求拦截),包含http-dns解决方法,有效防止DNS劫持,用于分析http,https请求,禁用/允许代理,防抓包)

    ZXRequestBlock 安装 通过CocoaPods安装 pod 'ZXRequestBlock' 手动导入 将ZXRequestBlock拖入项目中. 导入头文件 #import " ...

  2. 【爬虫进行时】手机客户端app爬虫抓包(Fiddler)

    鉴于目前会常用到爬虫来采集一些数据以支持和解决问题,开贴记录验证出来的好用的methods.tools.problems 和 solutions. 之前有个需求抓b站的数据,由于当时并不会从手机app ...

  3. 使用fiddler对手机APP进行抓包

    在做手机或移动端APP的接口测试时,需要从开发人员那里获取接口文档,接口文档应该包括完整的功能接口.接口请求方式.接口请求URL.接口请求参数.接口返回参数.如果当前项目没有接口文档,则可以使用fid ...

  4. ios手机如何安装charles抓包工具证书

    ios手机如何安装charles抓包工具证书 安装证书前提,已经下载好charles 1.打开手机设置–WiFi–配置代理–点击手动–填写(服务器,端口号)–点击存储 不知道服务器和端口号,在char ...

  5. android抓包 dns,利用 dns 实现 app简易抓包

    场景:对H5打包的 app实现抓包 环境:centos 8 follow the guide: https://www.linuxtechi.com/setup-bind-server-centos- ...

  6. Android App无法抓包的解决方案总结

    原文链接 干货|Android App无法抓包的解决方案总结 如果对文章感兴趣,可以扫一扫微信二维码关注作者的微信公众号,后续会推送更多干货文章,感谢您的支持.

  7. 五、小程序|App抓包-Drony配合Burp实现App定向抓包

    小程序|App抓包 Drony配合Burp实现App定向抓包 一.建议google市场下载安装包 下载并安装到安卓手机上,繁体版 https://apps.evozi.com/apk-download ...

  8. Android端App无法抓包解决方法——Drony

    Android端App无法抓包解决方法--安装Drony 1:安装drony (这里手机使用的Android设备) 2:开启代理抓包软件(Burpsuite) 3:配置drony转发 1:安装dron ...

  9. 学习笔记(01):Fiddler抓包实战【小强测试品牌】-移动app端抓包

    立即学习:https://edu.csdn.net/course/play/4867/87815?utm_source=blogtoedu 移动app端抓包

最新文章

  1. 安装后系统配置及优化
  2. 通俗易懂讲解自适应提升算法AdaBoost
  3. vlc-qt编译 linux,记录一次搞vlc官方源码中Qt示例工程的过程,文件路径对话框
  4. (82)Vivado系统同步接口约束
  5. 机器学习工程师岗位面试经历之游戏行业
  6. 双目摄像头和单目摄像头_挑战激光雷达,MAXIEYE要重新定义单目摄像头?
  7. python 卷积神经网络 应用_卷积神经网络在目标定位中的应用
  8. linux scp命令 将数据从一台linux服务器复制到另一台linux服务器
  9. 第四天:使用 session cookie redis完善登录验证及登录路由
  10. [转载] IoT设备WiFi配网及现状
  11. 项目经理和产品经理的区别
  12. 高性能科学计算、工程计算仿真用电脑装机经验
  13. 『梦想城镇』终极攻略
  14. 查看电脑开关机时间和记录
  15. 服务器的cd驱动器怎么修改盘符,更改dvd驱动器盘符,cd驱动器盘符改
  16. 立创eda入门-原理图,PCB制作
  17. 诸如zxing二维码调用摄像头旋转角度问题解决方法
  18. 计算机关机更改域用户登录,计算机怎么退域和重新加域?
  19. Dichotomy poj River Hopscotch
  20. 晶振(crystal)与晶振(oscillator)的区别

热门文章

  1. 天行健,君子以自强不息.
  2. 集体智慧编程——提供推荐
  3. nvm下载node版本缓慢问题
  4. 永磁直驱风力发电机并网仿真,机侧采用最大功率跟踪控制
  5. Java设计模式:Build模式
  6. 用C语言写一个简单的小游戏——猜数字
  7. 视频点播技术android,基于Android机顶盒VOD视频点播系统的设计与实现
  8. 教师一定要看的15部电影
  9. 要怎么在计算机里清除桌面内存,怎么清理电脑内存
  10. 跟老男孩学Linux 5 in 1 PDF