app不走系统代理?如何抓包?

现象

模拟器开启WLAN代理如下:

发现抓不到包:

但是app却依旧正常返回数据,没有断网:

原理

网络请求代理设置NO_PROXY

  • android系统设置的代理并不是强制对所有app生效的
  • app可以在网络请求类库中通过自定义代理设置,选择是否要走系统代理
 public void run() {
        Looper.prepare();
        OkHttpClient okHttpClient = new OkHttpClient.Builder().
                proxy(Proxy.NO_PROXY).//okhttp不设置代理
                build();
        Request request = new Request.Builder()
                .url("http://www.baidu.com")
                .build();
        Response response = null;
        try {
            response = okHttpClient.newCall(request).execute();
            Toast.makeText(this, Objects.requireNonNull(response.body()).string(), Toast.LENGTH_SHORT).show();
        } catch (IOException e) {
            e.printStackTrace();
        }
        Looper.loop();
    }

解决方案

既然不走系统代理,那么直接抓系统的包不就可以了吗

被抓包的APP并不知道自己被套在了第几层

方案一

使用proxifier 将模拟器请求直接转发到抓包软件,相当于抓安卓系统的包:

抓包结果:正常抓包

方案二

同理,使用本地VPN抓包软件,如抓包精灵

方案三

justtrustme或者直接okhttp代理方法,使代理设置语句无效

 

总结

一层一层又一层,总有套路得人心!

 

 

posted @ 2020-12-11 14:03  Zdelta  阅读(396)  评论(0编辑  收藏  举报