如何让app不走系统代理?
Posted 「已注销」
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何让app不走系统代理?相关的知识,希望对你有一定的参考价值。
作为一名数据采集工程师,现在在研究如何防止别人采集我们的数据。当然这就是一个博弈,在博弈的过程中大家都能得到技术上的进步。
今天写的文章是如何让app不走系统代理
效果图
流程分析
- 当点击按钮的时候,使用okhttp发起了一个百度的请求。
- 将获得的内容通过Toast弹出。
- 同时在观察fiddler是否抓取到了请求。
原理分析
- 在网络请求的时候,通过OkHttp可以设置一个选项,代理的类型。我们在这里直接设置成Proxy.NO_PROXY。这样话即使android设置了代理,我们的app也不会走代理。
- 如果我们把proxy选项注释掉,看下效果。
- 效果显而易见呀。很多网络请求类库应该都会有代理的选项,大家可以试下其他的。
源码
public void run()
Looper.prepare();
OkHttpClient okHttpClient = new OkHttpClient.Builder().
proxy(Proxy.NO_PROXY).
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();
总结
- android系统设置的代理并不是强制对所有app生效的
- app可以在网络请求类库中通过自定义代理设置,选择是否要走系统代理
- 看到这里,大家应该知道为什么有时候通过fiddler无法抓取app的包了么?即使app使用的是http的请求。
- 当然,既然android系统的代理设置并不是强制的,那么我们想抓取app的包应该怎么办呢?我只管抛出问题。
以上是关于如何让app不走系统代理?的主要内容,如果未能解决你的问题,请参考以下文章