比如在用 FireBase SDK,想在部分无法访问 FireBase 的国家 /地区使用,那么有没有方案?比如建立一个应用内代理,无需 ROOT 或系统上面的 VPN,仅供自己使用..(
1
jkjoke 2018-05-19 17:32:45 +08:00
参考 TG 的内置 socks 代理
|
3
gam2046 2018-05-19 19:17:03 +08:00
https://github.com/tiann/epic
EPIC 可以对自身进行 hook,所以你可以尝试 hook 一些基础的网络出口类(例如 HttpConnection )以达到内置代理的目的 |
4
Trumeet OP @gam2046 感谢回复,不过 epic 兼容性成问题吧.. 其他项目上有在用,但是目前不兼容 P 和一些 abi 们(
|
5
gam2046 2018-05-20 10:13:13 +08:00
以我的认知来看,这其实没有什么很好的办法了。
那另一种方法就是在编译时期静态植入咯。尝试用 AspectJ 一类的方案,同样尝试 hook。 但由于是静态植入,因此你无法直接 hook 系统类(例如 HttpConnection ),你只能 hook 你 sdk 中发起网络请求的方法,这就麻烦很多了。例如 SDK.request(...)方法发起了网络请求,其方法内部使用了 HttpConnection,你只能 hook 这个 request 方法,而不能 hook 其内部调用的系统方法。 但是胜在稳定性上。 如果其他大佬有更好的方法,恳请 at 我一下,之前有过类似的需求,但是确实没找到两全其美的方法。 |
6
zts1993 2018-05-20 20:20:22 +08:00
又一次活捉 yuuta
|
7
USNaWen 2018-05-21 10:45:02 +08:00
酷安搜“ Google 空间”,这货和你的描述完全一致。
|