歡迎光臨
每天分享高質量文章

Android :如何防止被抓包工具抓包

作者:愛生活愛Android

連結:https://www.jianshu.com/p/02a2167b3c8d

需求來源

在公司工作過程中,有時領導會拿競爭對手的APK讓我抓包,看看別人的介面請求和傳回結果,然後分析這些資料在公司後期產品開發中是否有用。如果我們公司有這種想法,那麼我們公司競爭對手肯定也有這種想法,那麼如何避免他人拿我們公司APK去抓包呢?下麵我就來說下自己的想法。

原理分析

平時都是用Fiddler對Android應用進行抓包,如果對Fiddler不熟悉,可以點選檢視Fiddler抓包方法https://jingyan.baidu.com/article/03b2f78c7b6bb05ea237aed2.html。在抓抱前,需要將手機的WiFi進行代理設定,然後才能在電腦上使用Fiddler成功抓包,那麼我們試想一下,如果在APP請求網路之前先判斷下手機網路是否使用了代理,如果使用了代理就不請求介面。新的問題來了,在Android手機中如何知道手機網路是否使用了代理?

程式碼實踐

經過查詢資料與實踐,發現如下的程式碼能夠滿足需求:

private boolean isWifiProxy() {
    final boolean IS_ICS_OR_LATER = Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH;
    String proxyAddress;
    int proxyPort;
    if (IS_ICS_OR_LATER) {
       proxyAddress = System.getProperty("http.proxyHost");
       String portStr = System.getProperty("http.proxyPort");
       proxyPort = Integer.parseInt((portStr != null ? portStr : "-1"));
    } else {
       proxyAddress = android.net.Proxy.getHost(this);
       proxyPort = android.net.Proxy.getPort(this);
    }
    return (!TextUtils.isEmpty(proxyAddress)) && (proxyPort != -1);
  }

不足之處

這裡只要判斷使用了代理,就停止請求介面,這也是有些不足的地方,比如使用者使用了一個國外的代理,她使用該代理是用來訪問國外網站的,非常合理。就應為她加入了代理,導致不能使用我們的APP,這就使得使用者體驗比較差。

總結

這個總結不好下啊,因為公司考慮到使用者體驗,最終沒使用這個方法,所以只是個研究性的辦法。後期如果使用上了,在來補充這個總結。



●編號366,輸入編號直達本文

●輸入m獲取到文章目錄

推薦↓↓↓

Java程式設計

更多推薦18個技術類公眾微信

涵蓋:程式人生、演演算法與資料結構、駭客技術與網路安全、大資料技術、前端開發、Java、Python、Web開發、安卓開發、iOS開發、C/C++、.NET、Linux、資料庫、運維等。

贊(0)

分享創造快樂