还在为大厂app抓不到包而犯愁吗?原因很简单,解决方法更简单!

如果我这样设置了,你就会发现 你的app的接口 也会抓不到了。

继续看源码:

注释说的很明白,大概意思就是当你设置了这个属性以后,我们就不会使用系统代理了。

其实flutter也是有类似的功能,只不过okhttp 默认情况下是使用系统代理的,你要不想使用 你就必须写额外的代码,但是flutter是反过来的, flutter是默认就不使用系统代理,你要开启代理,必须在代码中进行设置:

lass ProxyDio {
//填入你的代理地址
static const _PROXY_IP_ADDRESS = “10.12.65.66”;
//填入你的代理端口号
static const _PROXY_PORT_NUM = “5000”;

static Dio getProxyDio() {
var dio = Dio();
final adapter = dio.httpClientAdapter as DefaultHttpClientAdapter;
adapter.onHttpClientCreate = (client) {
// 设置该客户端的代理为指定的 ip:端口
client.findProxy = (uri) {
// localProxyIPAddress 和 localProxyPort 是在外部被忽略文件中定义, 方便各个开发者自行更改.
return "PROXY " + _PROXY_IP_ADDRESS + “:” + _PROXY_PORT_NUM;
};
// 安卓机上面证书授权:
client.badCertificateCallback = (cert, host, port) => true;
};
return dio;
}
}

特殊定制

了解到 事情的来龙去脉以后,我们还需要思考1个问题,为什么大厂的app 是有些接口抓不到,有些接口 就能抓到呢? 这里其实有3个原因。

第一: webview webview 使用的http协议 显然跟我们的okhttp是不一样的。而webview使用的 http协议栈 默认都是c代码的实现,我们很难干预,从测试的情况来看,这个http协议栈的实现 是会使用默认系统代理的。 我暂时没找到 关闭这个功能的api,如果有小伙伴实现了 可以告诉我

第二:可以针对性的对某些敏感接口 使用no_proxy,而其余接口保持正常。

实际上okhttp做的非常强大,对于代理的设置 他可以做到针对 接口地址不同 而 使用不一样的设置。

比如这种写法 和上面的no_proxy 就是差不多效果的

再看看

第三: 即使你使用了全局的no_proxy 代理,但是通常 我们的app里面都不会只有一个okhttp的 client,因为还有其他第三方的库引进来,他们的client 如果没有使用 no_proxy 那他们的接口 还是可以被抓包软件抓到的。

当然这个问题也是可以解决的,我们只要利用 字节码修改技术 直接修改 字节码即可。 这里就不多介绍了,有兴趣的可以自己实现。

使用了no_proxy 真的就抓不到了吗?

当然不是,解决问题的方法就很多,最简单的就是使用drony这个软件,模拟一个vpn网络 即可。 原理很简单,让流量走到vpn里面, 然后vpn默认使用代理 即可。

感谢大家关注我,分享Android干货,交流Android技术。
pn里面, 然后vpn默认使用代理 即可。

感谢大家关注我,分享Android干货,交流Android技术。

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值