Android OKHttp 防止第三方抓包 - chuwuwang/ReadingNote GitHub Wiki

对其设置为不使用代理的模式,它就不会从系统中,读取代理信息,进行网络请求。而是会忽略掉它,直接发送网络请求。以这样的方式,就可以阻止第三方使用 Fiddler 或 Charles 进行抓包。

var httpBuilder = OkHttpClient.Builder()
                .addInterceptor(defaultInterceptor())
                .connectTimeout(DEFAULT_TIMEOUT, TimeUnit.MILLISECONDS)
                .writeTimeout(DEFAULT_TIMEOUT, TimeUnit.MILLISECONDS)
                .readTimeout(DEFAULT_TIMEOUT, TimeUnit.MILLISECONDS)
                .proxy(Proxy.NO_PROXY)

判断当前系统是否挂代理

private fun checkWifiProxy(): Boolean {
    val IS_ICS_OR_LATER = Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH
    val proxyAddress: String?
    val proxyPort: Int?
    if (IS_ICS_OR_LATER) {
        proxyAddress = System.getProperty("http.proxyHost")
        val portStr = System.getProperty("http.proxyPort")
        proxyPort = Integer.parseInt(portStr ?: "-1")
    } else {
        proxyAddress = android.net.Proxy.getHost(this)
        proxyPort = android.net.Proxy.getPort(this)
    }
    return TextUtils.isEmpty(proxyAddress) == false && proxyPort != -1
}