1.背景

除了校验HTTPS证书防止中间人抓包以外,常见的方法还有通过检测代理防止抓包,其原理是检测到设备开启系统代理后,APP中通过代码实现禁用代理,以OkHttp框架为例,示列代码如下:

  1. /*
  2. * 检测代理
  3. * 直接绕过代理,网络正常但抓包工具无法抓包
  4. */
  5. mCheckProxy = findViewById(R.id.checkProxy);
  6. mCheckProxy.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
  7. @Override
  8. public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
  9. if (isChecked){
  10. client = new OkHttpClient().newBuilder().proxy(Proxy.NO_PROXY).build();
  11. }else{
  12. client = new OkHttpClient();
  13. }
  14. }
  15. });

对抗方法也比较简单,可以使用iptables对请求进行强制转发,ProxyDroid全局代理工具就是通过iptables实现的,所以使用ProxyDroid开启代理,可以比较有效的绕过代理检测。

2.ProxyDroid设置**

2.1推荐从Google Play下载ProxyDroid

**

2.2对ProxyDroid进行配置(基本配置)

  1. 1 Auto Setting不勾选,我们手动进行配置。<br /> 2 Host:输入代理服务器IP。<br /> 3 Port:输入代理服务器端口。<br /> 4 Proxy Type选择代理服务器提供服务类型:我这里选择Socks5。<br /> 5 Auto Connect为当2G/3G/WIFI网络开启时,自动开启代理服务。不勾选,我们手动启动,以获取最大灵活性。<br /> 6 Bypass Addresses:相当于黑名单列表,选择排除代理的IP范围,有需要的可以自己手动设置。<br />![image.png](https://cdn.nlark.com/yuque/0/2020/png/258277/1602321947771-cbafe411-fd00-40e1-8633-ec7e7e6e6c7c.png#align=left&display=inline&height=454&margin=%5Bobject%20Object%5D&name=image.png&originHeight=908&originWidth=519&size=161265&status=done&style=none&width=259.5)

2.3认证信息配置

  1. 1Enable Authentication :如果代理服务器需要账户、密码认证,勾选。<br /> 2User :认证账户名。<br /> 3Password :认证密码。<br /> 4NTLM AuthenticationNTLM/ NTLM2Windows早期的一种认证方式,不用勾选。

2.4特征设置

  1. 1Global Proxy:一定要勾选,即为全局代理,代理所有App。<br /> 2Individual Proxy:单独代理所选App ,勾选了(1)的不用管。<br /> 3Bypass Mode:勾选了代表(2)中所选App不代理,勾选了(1)的不用管。<br /> 4DNS Proxy:开启DNS代理。

2.5通知设置

  1. 1 Ringtone :选择通知铃声。<br /> 2 Vibrate :选择连接发生变化时是否震动提醒。

**