Total Pageviews

Saturday, 8 September 2012

Android手机的GAE代理- gaeproxy

建议先仔细查看 http://code.google.com/p/gaeproxy/
通过这个方法安装可能并不能成功翻墙。
主要是文章中有一部分并没有提到安装busybox GAEProxy要配合busybox使用才可以成功在android上实现翻墙。
Busybox主要提供了一个本地http服务器以实现通过127.0.0.1对应的端口转发。
Busybox的android市场地址
好,在你安装完busybox之后,就可以继续下面的教程了.

gaeproxy是为Android手机使用GAE代理而建立的一个翻墙项目,最近刚好更新,美博园也随之更新。据官方介绍:gaeproxy是一个利用 WallProxy | GoAgent的Android 客户端,综合 RedSocks、CMWRAP、SSHTunnel 和 Python For Android 等项目,以实现 Android 系统上基于 Google AppEngine 的 HTTP 代理。
一、官方项目及下载:
最新版下载:
2012-7-3更新: gaeproxy-0.16.7.apk
其中升级 goagent 1.8.11
二个证书文件及导入方法:
CA.crt
证书导入步骤(Android 4.0 及以上系统) 1. 将此文件置于 SD 卡根目录 2. 进入设置->安全->从SD卡安装证书
cacerts.bks
导入 GAEProxy CA 到 Android 系统 通用步骤
请确认手机已 ROOT,对于 HTC 的机型,还需确认处于 s-off 状态
1. 备份 /system/etc/security/cacerts.bks 文件
2. 下载 已修改好的根证书 并放于当前目录下,之后在命令行中执行:
adb remount
adb push cacerts.bks /system/etc/security/
adb remount

或者使用 Root Explorer 从 SD 卡复制到 /system/etc/security/ 目录。
3. 重启手机后生效
4.0 及以上系统
1. 下载 原始根证书 置于 SD 卡根目录
2. 进入设置->安全->从SD卡安装证书
参考
中文指南:https://humou.net/blog/201009241182.html
英文指南:http://wiki.cacert.org/ImportRootCert#Android_Phones
二、官方简介
若遇到无法正常使用 Google Play 的情况,请在关闭 GAEProxy 的状态下刷新 Google Play 页面,并确认已成功登录后再打开 GAEProxy。或者也可以尝试使用 smarthosts 来解决无法登陆的问题。
快速指南
【可选】导入 GAEProxy 根证书,详细请见 教程
部属自己的 WallProxy / GoAgent Fetch Server ,详情请见:
WallProxy 1.0.1 http://code.google.com/p/gaeproxy/wiki/wallproxy
GoAgent http://code.google.com/p/goagent
下载并安装 GAEProxy 最新版。
填入你的 appspot 地址,形如:https://app-id.appspot.com/fetch.py
勾选 “开启服务”,浏览互联网。
FAQ
1. 是否一定需要 ROOT 权限?
一定需要。由于 Android 系统本身并没有提供完善的代理实现,所以必须借助于 iptables 这个模块来实现流量代理与转发,而运行 iptables 需要 ROOT 权限。
2. 是否一定需要 iptables 模块?
一定需要。理由同上。
3. 如何确认自己的 ROM 支持 iptables?
一般来说,只要系统原生支持 tether 的都支持 iptables。手动确认的方法是在 adb 下,执行 “iptables –L –t nat”,若提示找不到 module 则可以认为是不支持 iptables。
4. 是否 ROM 中包含名为 iptables 的可执行文件,即可以认为是支持 “iptables”?
准确的来说,应该是需要 ROM 的 kernel 中编译进了 Netfilter / NAT 模块,并至少支持 DNAT 和 REDIRECT 两种转发模式中的一种。一些第三方 ROM 会裁剪掉 iptables 相关的模块,却又提供了 iptables 的二进制文件。
5. 为什么会无法访问一些 https 网站?
受到 DNS 污染的影响,老版本中会存在无法访问某些 https 网站的问题。没有 ROOT 权限或 iptables 支持的用户,若自行在浏览器中设置代理,也会遇到这种情况。
6. 为什么无法访问 Twitter ?
请启用“https 代理”选项,之后可以选择使用 https 链接访问 Twitter 移动页面,或直接使用 Twitter 客户端(推荐:twicca, tweetdeck, 以及官方客户端)。
7. 升级到新版本后,为什么会无法使用?
每次版本更新后,由于测试不充分等原因,确实有可能引入一些 Bug。遇到类似情况,请前往项目网站下载老版程序重新安装,以确认遇到的问题是否是由更新造成。另外,建议每次大版本号更新时,请卸载之前版本再重新安装。
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 客户端代码。
WallProxy: WallProxy 客户端代码。
GoAgent: GoAgent 客户端代码。
Python4Android:用来在 Android 系统中执行 Python 脚本的运行时环境,以依赖包形式发布。
另外还有一些发布在 StackOverflow 上的代码片段,在这里不再详细介绍。
电子市场:
https://market.android.com/details?id=org.gaeproxy
三、使用教程
下载并安装程序,运行程序,首次运行程序需在联网的状态下并确认已插入SD卡,下拉菜单至底部勾选“安装/卸载”安装依赖模块,安装文件默认存储于SD卡或外置存储器中;
免费Android手机GAE代理 gaeproxy-0.16.7
选择开启“全局代理”或“分应用代理”(都需要ROOT权限);
免费Android手机GAE代理 gaeproxy-0.16.7
建议选择“分应用代理”,点击“分应用代理”,勾选需要使用代理的应用;
免费Android手机GAE代理 gaeproxy-0.16.7
点击“代理类型”选择代理类型(GAppProxyWallProxyGoAgent);(建议选择goagent)
免费Android手机GAE代理 gaeproxy-0.16.7
或者点击“代理地址”、“密钥”配置自己的Google AppEngine代理账号(默认的代理地址每天只有10G的带宽配额);其它选项可根据使用习惯及具体情况进行设置;
免费Android手机GAE代理 gaeproxy-0.16.7
设置完成后勾选“代理开关”即可。
免费Android手机GAE代理 gaeproxy-0.16.7
【去广告修正版截图】:
免费Android手机GAE代理 gaeproxy-0.16.7
免费Android手机GAE代理 gaeproxy-0.16.7
免费Android手机GAE代理 gaeproxy-0.16.7
---------------------------------------------------------------------------------------------------------------------
gaeproxy—GAE Proxy for Android System


GAEProxy for Android

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

如遇闪断问题,请安装最新版的BusyBox:
  1. https://market.android.com/details?id=stericson.busybox
  2. https://market.android.com/details?id=com.jrummy.busybox.installer


准备工作

0. 【推荐】安装依赖模块,2.2及以上系统默认安装到SD卡:http://gaeproxy.googlecode.com/files/gaeproxy-package.apk
1. 部属自己的 GAppProxy / WallProxy / GoAgent Fetch Server ,详情请见:
2. 下载并安装 GAEProxy 最新版。(若一并安装了 GAEProxy Runtime Module,1.3.3 以上版本的依赖模块不再需要另行下载)
3. 第一次运行 GAEProxy 请按照提示进行设置,然后在联网并插入SD卡的状态下勾选 “安装依赖模块” (依赖包大小 5MB,建议在 WIFI 状态下下载,安装文件存放于 SD 卡中)。
4. 现阶段 GAEProxy 的运行依赖于 iptables ,并需要获得 ROOT 权限。
5. 建议不要开启“全局代理”,最新版的 GAEProxy 支持“为应用分别设置代理”功能,去掉“全局代理”选项,再点击此选项,之后就可以选择你需要使用代理的应用了。
6. 勾选 “开启服务”,浏览互联网。

FAQ

1. 是否一定需要 ROOT 权限?
一定需要。由于 Android 系统本身并没有提供完善的代理实现,所以必须借助于 iptables 这个模块来实现流量代理与转发,而运行 iptables 需要 ROOT 权限。
2. 是否一定需要 iptables 模块?
一定需要。理由同上。
3. 如何确认自己的 ROM 支持 iptables?
一般来说,只要系统原生支持 tether 的都支持 iptables。手动确认的方法是在 adb 下,执行 “iptables –L –t nat”,若没有提示找不到 module 则可以确认为支持 iptables。
4. 是否 ROM 中包含名为 iptables 的执行文件,即可以认为是支持 “iptables”?
准 确的来说,应该是需要 ROM 的 kernel 中编译进了 Netfilter / NAT 模块,并至少支持 DNAT 和 REDIRECT 两种转发模式中的一种。对于一些个人开发者的第三方 ROM,由于其水平有限或缺少相关的技术支持,会缺少对 iptables 的支持,即使他们提供了 iptables 的二进制文件。
5. 为什么会无法访问一些 https 网站?
受到 DNS 污染的影响,老版本中会存在无法访问某些 https 网站的问题。对于没有 ROOT 权限或 iptables 支持的用户,若自行在浏览器中设置代理,也会遇到这种情况。
6. 升级到新版本后,为什么会无法使用?
每次版本更新后,由于测试不充分等原因,确实有可能引入一些 Bug。遇到类似情况,请前往项目网站下载老版程序重新安装,以确认遇到的问题是否是由更新造成。另外,建议每次大版本号更新时,请卸载之前版本再重新安装。
7. 用泰坦备份或其他备份工具恢复 App 后为什么无法使用?
请不要使用备份工具,备份和恢复 GAEProxy,因为会破坏数据区的执行文件和权限,造成 App 无法正常运行。
8. 为什么开启代理之后依然无法 ping 通一些网站?
由于我们并没有转发 UDP 流量,因此也不会转发 ICMP 数据包。在无法直接连通的情况下,自然也无法正常 ping 到对方服务器。另外,无法 ping 通服务器并不代表无法与其通信。
9. 为什么会有广告,如何去掉?
GAEProxy 中有置顶广告,收入会投入到 App 的再开发及相关服务器的部署(如 DNS 代理)。若实在觉得广告碍眼,可以从源代码自行编译没有广告的版本或利用 hosts 工具全局屏蔽广告。
10. 如何获得源代码?
GAEProxy 是一个开源项目,且都依照 GPLv3 发布源代码。源代码及文档见各自的项目网站:
11. 如何参与到项目中来?
参与到项目的方法包括:提交 Bug Report 或者改进建议,也可以直接提交 patch。对于后者,我们会在第一时间做出反馈,并将修改合并到主分支中。
12. 是否可以修改源代码后另行发布?
可以,只要修改后的项目也依照 GPLv3 发布即可。
13. 是否可以捐助项目?
本项目不支持任何形式的捐赠,但欢迎各位参与到项目中(提交 issue 等)来帮助我们开发出更好的 App。
14. 项目中都用到了那些开源组件?
redsocks:与 iptables 配合实现转发功能。
dnsproxy:cmwrap的子项目,用来代理 DNS 流量。
proxylist: TorProject 中的代码,以实现分应用代理。
iptables: DroidWall 项目提供的二进制文件。
GAppProxy: GAppProxy 客户端代码。
WallProxy: WallProxy 客户端代码。
GoAgent: GoAgent 客户端代码。
Python4Android:用来在 Android 系统中执行 Python 脚本的运行时环境,以依赖包形式发布。
另外还有一些发布在 StackOverflow 上的代码片段,在这里不再详细介绍。

电子市场

GAEProxy for Android

好吧,又是一个新项目,实现了基于 GAppProxy 的 Android 客户端。

原理

这次当了回打包组,实际工作也只是写了些界面和脚本,于是 GAEProxy 的原理如下:
1. 从 SSHTunnel 中移植了 UI、DNS Proxy 这两部分代码,连图标也干脆一起移过来了。
2. 由 Python for Android 项目借用了编译好的 Python 环境,以依赖包的方式随 GAEProxy 一起发布,因此第一次运行时需要选择安装依赖包。
3. 继续借用了 TransProxy 中的 RedSocks,用来做 Redirector。
4. 好吧,连 IPTABLES的 binary 都是从 droidwall 里来的。。。

准备

1. 首先你要有个 GAppProxy。假如你用的是 WallProxy 什么的也不要紧,反正客户端都是 Python 的,有兴趣的话自己改一下脚本就行,脚本都在 assets/ 目录下面。
2. 因为众所周知的原因,加入了 DNS Proxy 功能,以解决压根连不上 GAE 的问题,所以各位喜欢改 Hosts 的同学可以省省心了。好吧,还是连不上?这个真不怪我。。。
3. 你的 Android 系统必须获得 ROOT 权限,并且支持 IPTABLES,原因这儿就不详细解释了。据我所知现在大部分机型就算不能完美 ROOT,临时 ROOT 还是没有问题的。至于支持 IPTABLES,只要不是什么国内打包组的山寨 ROM(某同学刷了某山寨 ROM 后,联系人的默认头像变成了各位 AV 女优。。。)应该都可以。

使用

1. 下载并安装 GAEProxy 最新版。
2. 第一次运行 GAEProxy 请按照提示进行设置,并确保在联网并插入SD卡的状态下勾选 “安装依赖模块” 。
3. 现阶段 GAEProxy 的运行依赖于 iptables ,并需要获得 ROOT 权限。因此请确保 “自动设置代理” 选项开启。
4. 勾选 “开启服务”,浏览互联网。

已知问题

1. 在我的真机上,连接 HTTPS 时会出现 Segmentation Fault,查看了下 logcat,是出现在 /system/lib/libssl.so 上,应该和我的 ROM 有关系。
2. 访问 HTTPS 时会提示证书有问题,这个是 GAppProxy 的问题了,问题不大.

---------------------------------------------------------------------------------------------
这个GAEPROXY和sshtunnel是安卓手机翻墙的“绝代双骄”。2者的原理很类似。