美文网首页
iOS app 防止抓包

iOS app 防止抓包

作者: UILable攻城狮 | 来源:发表于2023-07-31 13:58 被阅读0次

抓包原理

  • 其实原理很是简单:一般抓包都是通过代理服务来冒充你的服务器,客户端真正交互的是这个假冒的代理服务,这个假冒的服务再和我们真正的服务交互,这个代理就是一个中间者 ,我们所有的数据都会通过这个中间者,所以我们的数据就会被抓取。HTTPS 也同样会被这个中间者伪造的证书来获取我们加密的数据。

防止抓包

  • 我们可以在请求配置中清空代理,让请求不走代理
  • 目的是为了在创建NSURLSession对象的时候,自动将代理设置为一个空的字典(@{})。换句话说,它将拦截所有使用NSURLSession类创建对象的方法,将代理字典设置为空,然后再继续原本的逻辑。
  • 通过这种方式,你可以确保所有使用NSURLSession创建的实例都会自动启用空的代理设置。

在AppDelegate 配置 是否允许抓包

#if DEBUG
     [NSURLSession proxyEnabled: YES]; //允许抓包
#else
      [NSURLSession proxyEnabled:NO]; //禁止抓包
#endif
     

以下是我的实现方式 直接上干货
新建一个NSURLSession 扩展
.h

@interface NSURLSession (Extensions)

+ (void)proxyEnabled:(BOOL)enabled;

@end

.m

#import <objc/runtime.h>

@implementation NSURLSession (Extensions)

static BOOL proxyEnabled = YES;

+ (void)load {
    [super load];
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        Class class = [NSURLSession class];
        [self swizzleMethodWithClass:class
                    originalSelector:NSSelectorFromString(@"sessionWithConfiguration:")
                    swizzledSelector:NSSelectorFromString(@"_sessionWithConfiguration:")];
        [self swizzleMethodWithClass:class
                    originalSelector:NSSelectorFromString(@"sessionWithConfiguration:delegate:delegateQueue:")
                    swizzledSelector:NSSelectorFromString(@"_sessionWithConfiguration:delegate:delegateQueue:")];
    });
}

+ (void)proxyEnabled:(BOOL)enabled {
    proxyEnabled = enabled;
}

+ (NSURLSession *)_sessionWithConfiguration:(NSURLSessionConfiguration *)configuration {
    if (!proxyEnabled) {
        configuration.connectionProxyDictionary = @{};
    }
    return [self _sessionWithConfiguration:configuration];
}

+ (NSURLSession *)_sessionWithConfiguration:(NSURLSessionConfiguration *)configuration
                                   delegate:(nullable id<NSURLSessionDelegate>)delegate
                              delegateQueue:(nullable NSOperationQueue *)queue {
    if (!proxyEnabled) {
        configuration.connectionProxyDictionary = @{};
    }
    return [self _sessionWithConfiguration:configuration delegate:delegate delegateQueue:queue];
}

+ (void)swizzleMethodWithClass:(Class)cls originalSelector:(SEL)originalSelector swizzledSelector:(SEL)swizzledSelector {
    Method originalMethod = class_getClassMethod(cls, originalSelector);
    Method swizzledMethod = class_getClassMethod(cls, swizzledSelector);
    method_exchangeImplementations(originalMethod, swizzledMethod);
}


相关文章

  • Fiddler 对App抓包代理问题

    App 防止 Fiddler 抓包小技巧fiddler 抓不到app包 抓不到okhttp/asynchttpcl...

  • iOS 如何防止抓包

    iOS 如何防止抓包 1、抓包原理 为了防止被抓包那么就要了解抓包的原理。 其实原理很是简单:一般抓包都是通过代理...

  • IOS APP 防止抓包工具抓包

    原文地址 https://lm1024.xyz/archives/34 看了这篇有关对 iOS app 进行安全...

  • iOS App的几种安全防范

    iOS App安全防范总结: 1.防止抓包篡改数据 2.防止反编译 3.阻止动态调试 4.防止二次打包 关键检测:...

  • ios开发防止App被抓包

    实现iOS应用底层所有网络请求拦截(如ajax请求拦截),包含http-dns解决方法,有效防止DNS劫持,用于分...

  • iOS防止抓包

    #pragma mark - 初步方案,判断是否设置代理,如果设置了代理就视为在抓包 - (BOOL)getPro...

  • Android App 防止抓包

    这篇文章谈谈如何防止 App 被抓包 首先我们要知道常用的抓包方式有 Charles 和 Fiddler。他们通过...

  • iOS Charles使用

    Charles iOS抓包Https,iOS最新系统抓包 Charles抓包入门(Mac/iOS,HTTP/HTT...

  • iOS安全之防止抓包

    通过设置网络代理的方式,防止Charles等类型工具抓包。这种方式的特征就是不会出现抓包记录,不管是失败还是成功。...

  • iOS抓包&&安卓抓包

    Mac下使用Charles iOS 抓包Mac下使用Chrome 安卓抓包 iOS抓包 1、下载Charles ...

网友评论

      本文标题:iOS app 防止抓包

      本文链接:https://www.haomeiwen.com/subject/aaglpdtx.html