一行代碼避免OkHttp的網絡庫應用被抓包

在創建socket鏈接以前,OkHttp會獲取系統的代理信息,若是設置代理,那麼經過DNS解析其IP而後使用代理IP來創建socket鏈接。若是沒有設置代理,那麼會使用請求中的url的IP地址,來創建鏈接。網絡

若是要防抓包,那隻須要繞過代理就能夠了。socket

OkHttp使用 ProxySelector來獲取代理信息,在構造 OkHttpClient時是能夠設置的,其默認值是 ProxySelector.getDefault(),該默認值會反應出系統的代理信息。 那麼咱們就能夠提供本身的 ProxySelector實現來達到繞過系統代理的能力。

 1 OkHttpClient client = new OkHttpClient.Builder()
 2                             .proxySelector(new ProxySelector() {
 3                                  @Override
 4                                  public List<Proxy> select(URI uri) {
 5                                      return Collections.singletonList(Proxy.NO_PROXY);
 6                                  }
 7                             
 8                                  @Override
 9                                  public void connectFailed(URI uri, SocketAddress sa, IOException ioe) {
10                             
11                                  }
12                              }).build();

 

對於使用OkHttp的網絡庫,設置網絡庫不使用代理模式便可😄😄。
var mOkHttpClientBuilder = OkHttpClient.Builder().proxy(Proxy.NO_PROXY)
相關文章
相關標籤/搜索