Skip to content
Max Lv edited this page Jun 6, 2013 · 4 revisions

Table of Contents

GAE Proxy for Android

GoAgent Android 客户端,综合 RedSocks、CMWRAP、SSHTunnel 和 Python For Android 等项目,以实现 Android 系统上基于 Google AppEngine 的 HTTP 代理。

  • 升级前请确认您的 GoAgent 服务器端已更新到最新版本。
  • 2.2 及以下系统请使用 0.19.1 或之前的版本。从 0.20.X 版开始,仅支持 2.3 以上系统。
问题反馈:@gaeproxy

快速指南

Issue 提交规范

  • 提交 Issue 前请仔细阅读说明,所有不符合要求的 Issue 都将被自动标为无效。
  • 一般性的讨论和经验分享请前往邮件列表(gaeproxy@googlegroups.com)。同样的,在他人 Issue 下提出问题是无法得到有效反馈的。

FAQ

1. 是否一定需要 ROOT 权限?

一定需要。由于 Android 系统本身并没有提供完善的代理实现,所以必须借助于 iptables 这个模块来实现流量代理与转发,而运行 iptables 需要 ROOT 权限。

2. 为什么无法在某些局域网环境中使用?

GAEProxy 不支持二级代理,并需要确保此网路可以访问到公开的 DNS 服务器。因此, GAEProxy 无法在一些典型的公司网络和 WAP 类型的移动网络中使用。

3. 如何确认自己的 ROM 支持 iptables?

一般来说,只要系统原生支持 tether 的都支持 iptables。手动确认的方法是在 adb 下,执行 “iptables –L –t nat”,若提示找不到 module 则可以认为是不支持 iptables。

具体来说,GAEProxy 依赖于 kernel 中的 Netfilter / NAT 模块,并需要确保系统提供了 DNAT 和 REDIRECT 两种转发模式中的一种。

4. 为什么播放 Youtube 总是断流?

GAEProxy 与 Youtube 官方客户端存在一定的兼容性问题,表现为无法播放,或播放到一半处出现卡顿或断流。作为一个临时的解决方案,请直接在浏览器中访问 Youtube 移动页面,经测试,大部分网页中的 Youtube 视频都可以正常播放。

5. 为什么会无法访问一些 https 网站?

两种情况会导致访问 https 网站出错:1. 未导入 GAEProxy 的根证书;2. DNS 污染。对于第一种情况,只需要按照说明导入根证书即可。

而第二种情况则较为复杂,由于 Android 系统没有开放刷新 DNS 缓存的接口,一旦被 DNS 污染,需要尝试开启/关闭飞行模式,或直接重启系统。通过开启「自动启动」选项,可以确保手机的 DNS 解析处在被保护状态。

另外 GAEProxy 还提供了第三方的 HTTPS 代理功能,可以通过在设置界面中勾选「HTTPS 代理」选项启用此功能。需要注意的是,这一功能默认是关闭的,且只有经过签名的官方版本才支持此项功能。开启此功能后所有本地 HTTPS 流量将被转发到远程服务器,若您不明白这项功能是如何工作的,请不要打开此选项。更多细节请参考此文: http://blog.williamgates.net/2013/02/gaeproxy-analysis/

6. 为什么无法访问 Twitter 或使用 Twitter 的官方客户端?

Twitter 移动页面及客户端对于 Google App Engine 做了并发限制,具体表现为访问 mobile.twitter.com 出现 403 错误。可以通过使用第三方 Twitter 客户端来解决此类问题,推荐 Twicca、Twidere 及 Tweedle 三款客户端。

7. 开启 SuperSU 的完整记录功能后,为什么无法正常使用?

SuperSU 的完整日志记录功能会重定向标准输出,导致 GAEProxy 无法正常工作,因此请确认关闭 SuperSU 中 设置->记录方式->完整内容 选项。

8. 用泰坦备份或其他备份工具恢复 App 后为什么无法使用?

请不要使用备份工具,备份和恢复 GAEProxy,因为会破坏数据区的执行文件和权限,造成 App 无法正常运行。

9. 为什么开启代理之后依然无法 ping 通一些网站?

由于我们并没有转发 UDP 流量,因此也不会转发 ICMP 数据包。在无法直接连通的情况下,自然也无法正常 ping 到对方服务器。然而,无法 ping 通服务器并不代表无法与其通信。

10. 为什么会有广告,如何去掉?

GAEProxy 中有置顶广告,收入会投入到 App 的再开发及相关服务器的部署(如 DNS 代理)。若实在觉得广告碍眼,可以从源代码自行编译没有广告的版本或利用 hosts 工具全局屏蔽广告。

11. 如何获得源代码?

GAEProxy 是一个开源项目,且依照 GPLv3 发布源代码,源代码及文档见项目网站。

12. 如何参与到项目中来?

参与到项目的方法包括:提交 Bug Report 或者改进建议;直接提交 patch。对于后者,我们会在第一时间做出反馈,并将修改合并到主分支中。

13. 是否可以修改源代码后另行发布?

可以,只要修改后的项目也依照 GPLv3 发布即可。

14. 是否可以捐助项目?

本项目不接受任何形式的捐赠,但欢迎各位参与到项目中(提交 issue 等)来帮助我们开发出更好的 App。

15. 项目中都用到了哪些开源组件?

redsocks:与 iptables 配合实现转发功能。

dnsproxy:cmwrap的子项目,用来代理 DNS 流量。

proxylist: TorProject 中的代码,以实现分应用代理。

iptables: DroidWall 项目提供的二进制文件。

GAppProxy: GAppProxy 客户端代码。

GoAgent: GoAgent 客户端代码。

Python4Android:用来在 Android 系统中执行 Python 脚本的运行时环境,以依赖包形式发布。

另外还有一些发布在 StackOverflow 上的代码片段,在这里不再详细介绍。

电子市场

https://play.google.com/store/apps/details?id=org.gaeproxy