Android 应用内代理?

2018-05-19 17:25:35 +08:00
 Trumeet

比如在用 FireBase SDK,想在部分无法访问 FireBase 的国家 /地区使用,那么有没有方案?比如建立一个应用内代理,无需 ROOT 或系统上面的 VPN,仅供自己使用..(

2073 次点击
所在节点    问与答
9 条回复
jkjoke
2018-05-19 17:32:45 +08:00
参考 TG 的内置 socks 代理
Trumeet
2018-05-19 17:36:25 +08:00
@jkjoke 我是想拦截 SDK 产生的请求(也就是 APP 发出的所有请求)然后跑代理((
gam2046
2018-05-19 19:17:03 +08:00
https://github.com/tiann/epic

EPIC 可以对自身进行 hook,所以你可以尝试 hook 一些基础的网络出口类(例如 HttpConnection )以达到内置代理的目的
Trumeet
2018-05-20 09:48:11 +08:00
@gam2046 感谢回复,不过 epic 兼容性成问题吧.. 其他项目上有在用,但是目前不兼容 P 和一些 abi 们(
gam2046
2018-05-20 10:13:13 +08:00
以我的认知来看,这其实没有什么很好的办法了。
那另一种方法就是在编译时期静态植入咯。尝试用 AspectJ 一类的方案,同样尝试 hook。

但由于是静态植入,因此你无法直接 hook 系统类(例如 HttpConnection ),你只能 hook 你 sdk 中发起网络请求的方法,这就麻烦很多了。例如 SDK.request(...)方法发起了网络请求,其方法内部使用了 HttpConnection,你只能 hook 这个 request 方法,而不能 hook 其内部调用的系统方法。

但是胜在稳定性上。

如果其他大佬有更好的方法,恳请 at 我一下,之前有过类似的需求,但是确实没找到两全其美的方法。
zts1993
2018-05-20 20:20:22 +08:00
又一次活捉 yuuta
USNaWen
2018-05-21 10:45:02 +08:00
酷安搜“ Google 空间”,这货和你的描述完全一致。
Trumeet
2018-05-21 22:25:44 +08:00
@gam2046 感谢回复
silencelixing
2 天前
好问题,老兄有找到解决手段吗

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/456157

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX