android接口如何防抓取

 

通过Fiddler抓包工具获取接口信息>>>

那么问题来了,app怎么防抓取???

通过以下方案解决接口抓取问题!!!

 

方案一:通过判断手机是否设置了代理

/**
 * 是否设置了WIFI代理
 *
 * @return
 */
private static 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(BaseApplication.getInstance());
        proxyPort = android.net.Proxy.getPort(BaseApplication.getInstance());
    }
    return (!TextUtils.isEmpty(proxyAddress)) && (proxyPort != -1);
}
/**
 * 接口请求案例
 */
public static void request() {
    if (isWifiProxy()) {
        // 如果使用了代理
        return;
    } else {
        // 如果没有使用代理,则进行接口请求
    }
}

该方案如果设置了代理,则就不进行接口请求,但是如果你的正常/普通用户需要使用网络代理,同时又去使用你的app,就会给用户带来不太友好的体验,显然这种方案具有局限性。

 

 

方案二:通过网络请求时禁用代理

   Proxy.NO_PROXY 代表DIRECT连接的代理设置,基本上告诉协议处理程序不使用任何代理。

try{
    java.net.URL url = new java.net.URL("https://www.xxx.com");
    java.net.HttpURLConnection urlConnection = (java.net.HttpURLConnection) url.openConnection(java.net.Proxy.NO_PROXY);
}catch (Exception ex){
}

    如果你使用的okhttp网络框架

OkHttpClient.Builder builder = new OkHttpClient.Builder();
// 设置连接使用的HTTP代理。该方法优先于proxySelector,默认代理为空,完全禁用代理使用NO_PROXY
builder.proxy(Proxy.NO_PROXY);
OkHttpClient okHttpClient = builder.build();

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值