<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      iOS 防止charles抓包

      方案一:檢查手機Wifi是否設(shè)置了代理

          public func fetchHttpProxy() -> Bool {
              guard let proxy = CFNetworkCopySystemProxySettings()?.takeUnretainedValue() else { return false }
              guard let dict = proxy as? [String: Any] else { return false }
              guard let HTTPProxy = dict["HTTPProxy"] as? String else { return false }
              if(HTTPProxy.count>0){
                  return true;
              }
              return false;
          }

       1.以場景接口為例,設(shè)置了代理檢測,手機開啟代理,存在代理就直接返回,請求失敗。

          func getSelectedFamilyDeviceSomeInfo(parameters : Any?, succeed : @escaping([String : Any]?) -> (), failure : @escaping(Error?) -> ()) {
              let requestUrl:String = SEVER_URL.appending("/developStage/devicegroup/v2/group/someInfo").addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)!
              print(parameters ?? "")
              NSLog("RequestUrl : "+requestUrl)
              
              if self.fetchHttpProxy() {
                  print("++++++++++++設(shè)置了代理,不讓請求=======")
                  failure("設(shè)置了代理" as? Error)
                  return
              }else{
                  print("++++++++++++沒設(shè)置代理,自由請求=======")
              }

              
              // 成功閉包
              let successBlock = { (task: URLSessionDataTask, responseObj: Any?) in
                  succeed(responseObj as? [String : Any])
              }
              // 失敗的閉包
              let failureBlock = { (task: URLSessionDataTask?, error: Error) in
                  failure(error)
              }
              //accesstoken 加入請求頭
              getAccessToken(success: {
                  self.setHttpHeaderBasicProperty()
                  self.post(requestUrl, parameters: parameters, progress: nil, success: successBlock, failure: failureBlock)
              }) {
                  failure("Please sign in first" as? Error)
              }
          }

       

       

       2.注釋代理檢測,請求正常,界面正常展示,能抓取到場景接口數(shù)據(jù)

       

       

       方案二:對證書的驗證

      1.客戶端需要證書(Certification file), .cer格式的文件。(找服務(wù)器要,有可能需要轉(zhuǎn)化證書格式)

      2、把證書加進(jìn)項目中,把生成的.cer證書文件直接拖到你項目的相關(guān)文件夾中,記得勾選Copy items if neede和Add to targets。

      3、參數(shù)名意思

      AFSecurityPolicy

      SSLPinningMode

      AFSecurityPolicy是AFNetworking中網(wǎng)絡(luò)通信安全策略模塊。它提供三種SSL Pinning Mode

      /**

       ## SSL Pinning Modes

       

       The following constants are provided by `AFSSLPinningMode` as possible SSL pinning modes.

       

       enum {

       AFSSLPinningModeNone,

       AFSSLPinningModePublicKey,

       AFSSLPinningModeCertificate,

       }

       

       `AFSSLPinningModeNone`

       Do not used pinned certificates to validate servers.

       

       `AFSSLPinningModePublicKey`

       Validate host certificates against public keys of pinned certificates.

       

       `AFSSLPinningModeCertificate`

       Validate host certificates against pinned certificates.

      */

      AFSSLPinningModeNone:完全信任服務(wù)器證書;

      AFSSLPinningModePublicKey:只比對服務(wù)器證書和本地證書的Public Key是否一致,如果一致則信任服務(wù)器證書;

      AFSSLPinningModeCertificate:比對服務(wù)器證書和本地證書的所有內(nèi)容,完全一致則信任服務(wù)器證書;

      選擇那種模式呢?

      AFSSLPinningModeCertificate:最安全的比對模式。但是也比較麻煩,因為證書是打包在APP中,如果服務(wù)器證書改變或者到期,舊版本無法使用了,我們就需要用戶更新APP來使用最新的證書。

      AFSSLPinningModePublicKey:只比對證書的Public Key,只要Public Key沒有改變,證書的其他變動都不會影響使用。
      如果你不能保證你的用戶總是使用你的APP的最新版本,所以我們使用AFSSLPinningModePublicKey。

      allowInvalidCertificates

      1
      2
      3
      4
      /**
       Whether or not to trust servers with an invalid or expired SSL certificates. Defaults to `NO`.
       */
      @property (nonatomic, assign) BOOL allowInvalidCertificates;

      是否信任非法證書,默認(rèn)是NO。

      validatesDomainName

      1
      2
      3
      4
      /**
       Whether or not to validate the domain name in the certificate's CN field. Defaults to `YES`.
       */
      @property (nonatomic, assign) BOOL validatesDomainName;

      是否校驗證書中DomainName字段,它可能是IP,域名如*.google.com,默認(rèn)為YES,嚴(yán)格保證安全性。

      4、使用AFSecurityPolicy設(shè)置SLL Pinning

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      + (AFHTTPSessionManager *)manager
      {
          static AFHTTPSessionManager *manager = nil;
          static dispatch_once_t onceToken;
          dispatch_once(&onceToken, ^{
           
              NSURLSessionConfiguration *config = [NSURLSessionConfiguration defaultSessionConfiguration];
              manager =  [[AFHTTPSessionManager alloc] initWithSessionConfiguration:config];
       
              AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModePublicKey withPinnedCertificates:[AFSecurityPolicy certificatesInBundle:[NSBundle mainBundle]]];
              manager.securityPolicy = securityPolicy;
          });
          return manager;
      }
      posted @ 2022-12-05 12:16  朝陽向日葵  閱讀(1202)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 亚洲天堂男人的天堂在线| 国产成人久久精品流白浆| 国产精品一区二区三区黄| 国产精品自在线拍国产手机版| 久久人妻夜夜做天天爽| 国产精品二区中文字幕| 郁南县| 亚洲av精选一区二区| 广宁县| 久久精品国产中文字幕| 久久月本道色综合久久| 亚洲精品无码日韩国产不卡av| 蜜桃精品成人影片| 国产欧美亚洲精品a| 无码精品人妻一区二区三区中| 精品人妻少妇一区二区三区在线 | 97人妻免费碰视频碰免| 国产精品亚洲欧美大片在线看| 亚洲中文字幕无码不卡电影| 曰本丰满熟妇xxxx性| 麻豆一区二区三区香蕉视频| 最新国产精品亚洲| 台东市| 四虎影视库国产精品一区| 337P日本欧洲亚洲大胆精品555588| 太谷县| 国内精品久久久久影院薰衣草| 免费人成视频在线观看网站| 国产精品中文第一字幕| 亚洲中文字幕亚洲中文精| 99中文字幕国产精品| 无码人妻精品丰满熟妇区 | 亚洲一区二区中文av| 色九九视频| 国产精品视频不卡一区二区| 精品欧洲av无码一区二区| 国产午夜影视大全免费观看| 色欲av久久一区二区三区久| 中文字幕亚洲综合久久2020| 丝袜美腿视频一区二区三区| 一区二区三区精品自拍视频|