虽然使用iOS终端访问外网的方法很多,诸如Hosts,VPN,SSH等等,不过有没有一种一劳永逸的方法可以顺利的畅游外网呢?下面给大家详细介绍一款Cydia上的自动代理应用软件:GFWInterceptor
什么是 GFWInterceptor
GFWInterceptor 是 iPhone/iPad/iPod touch 设备上的自动代理插件,应用程序不需要支持API Proxy,也能够强制将请求通过第三方服务器中转。 现阶段已经能够适用于Twitter, facebook等不少应用。 GFWInterceptor 包括两个部分,第一部分为mobilesubstrate插件,用于拦截并将所有特定的http请求转发,第二部分为运行在GAE上的服务端版本,服务器仅仅做中转。其中第二部分基于 twitter-api-proxy 的代码实现 http://code.google.com/p/twitter-api-proxy/ 只支持越狱后的各iOS设备。不适用于 Safari 与 WebView 需要账号登录的部分。不能用于看视频。
客户端支持情况
Tweetings 有问题。其它一些采用网页 OAuth 的客户端应该在登录过一次后能行。Twitter for iPhone 因为 API 调用方式的关系会超出 GAE 的 Limit, 所以有些功能会时好时坏。 其余的客户端应该支持基本完美。
如何安装
在cydia中添加源
http://cydia.ifuckgfw.com
或者 http://gfwinterceptor.googlecode.com/svn/trunk/cydia (推荐后者)安装源内包既可,gfwinterceptor 依赖于 mobilesubstrate 和 preferenceloader。如果安装完毕没有在 Preference 中看到设置,说明没有正确安装。
内置服务器随时被墙,即内置默认的waytosing.appspot.com服务器,所以建议大家搭建自己的 api-proxy server (在本文末尾会介绍如何搭建GAE和PHP两种api-proxy server)
如何使用
安装后respring,gfwinterceptor即刻生效,可以试着打开 Twitter 应用直接使用(不用设置API,如果以前设置了可以去除)。在 Settings.app 会出现 gfwinterceptor 的设置选项。
FAQ
为什么我的 Twitter for iPhone 无法看 Profile, conversation 和 搜索? Twitter for iPhone 调用 search api,检查是否follow,查看profile的问题,是因为其软件自身设计的问题导致 (没有发出 Authorization Header),最彻底的解决方法是别用它了。 为什么不做 SBSettings 开关呢?因为 gfwinterceptor 的代码只有在程序启动时才会载入,而没有后台进程,所以不能制作 SBSettings 开关。包括一些会后台的应用,也得重启以后才能生效。
-------------进阶----------------------
GAE api-proxy server 架设方法
下载最新的GAE api-proxy server源程序:http://gfwinterceptor.googlecode.com/files/api-proxy-gae-v2-0.6d.zip
用Notepad++或者记事本打开 app.yaml
更改
application: waytosing
内的waytosing为你的GAE应用ID,例如
application:deepice-example
然后使用Google App Engine Launcher上传文件到GAE服务器.
此程序无需创建索引(Index)所以上传后即可直接使用,把你的服务器地址添入主力服务器替换原http://waytosing.appspot.com服务器重启iPhone即可.(用户名和密码不用管,因为GAE版没有此项功能.)
不过appspot服务器在国内已被墙,不出意外应该是无法直接访问的.所以需要写入iphone内的hosts文件.
使用iFunBox或者91之类的iphone文件管理软件进入iphone内 etc\hosts文件(请自行备份),使用文本编辑器打开在最后面另起一行添加
203.208.46.22 你的GAE_ID.appspot.com
例如
203.208.46.22 deepice-example.appspot.com
保存即可,文件权限644.
如果IP地址失效请在http://just-ping.com网站内查询g.cn的最新可用IP.
PHP服务器 api-proxy server 架设方法
服务器环境要求
服务器最好运行 Linux / FreeBSD 等操作系统,需要使用 apache httpd(nginx 有专用版本,请直接往下看),并且启用了 mod_rewrite,PHP 启用了 cURL支持。
下载/解压缩源代码
下载最新版的PHP api-proxy server源程序:http://gfwinterceptor.googlecode.com/files/api-proxy-php-0.6.zip解压后将 api-proxy-php 目录中的所有文件上传 / 移动到服务器相应目录。
文件配置
将 ~htaccess 文件改名为 .htaccess,之后用编辑器打开 users.config,按照文件中示范的每行一个用户名密码,用分号分隔的格式填入允许访问服务器的用户名密码。 不过需要注意的是,在默认 mime 情况下,apache 会把 users.config 当作文本文件,也就是说别人在浏览器输入 your.server/users.config 可以直接看到你的用户密码配置文件!临时解决办法是修改 index.php 第六行
$file_handle = fopen("users.config", "rb");
中的 users.config 位置,最好放到 http root 以外,比如改成 /home/gkp/gfw/users.config,之后把 users.config 移动到相应的位置就可以了。
开始使用吧
在安装好 GFWInterceptor 的 iDevice 上进入 Settings –> GFWInterceptor,将主力服务器设置成你安装 PHP 服务器端文件的地址,注意开头的 http:// 不要省略。在相应的位置填入上一步 users.config 中设定的用户名和密码,之后 respring 一下,打开 twitter for iPhone, Facebook, Foursquare 等应用试试看吧,没有问题的话应该可以顺利登录了。之后打开 safari,试试看 m.twitter.com,应该也是可以访问的。
有问题?
当安装 php-server 出现问题时,首先查看下 apache 的日志文件,如果都是类似于 File does not exist: /var/www/html/1 这样的报错的话,应该是 url rewrite 没有正常工作,请检查 apache 的 mod_rewrite 和 php-server 目录下面的 .htaccess 文件。
适用于 nginx 的版本
适用于 nginx 的 php 服务端程序目前还不支持用户名密码验证,安装方法如下:
下载 http://gfwinterceptor.googlecode.com/files/api-proxy-php-ngix-0.4.zip,并解压缩
把 api-proxy-php-ngix 目录下的文件上传/移动到服务器相应目录
把 gic 这个虚拟主机配置文件放到 nginx 会自动 include 的目录中,并编辑之,根据实际情况修改域名,文档目录等选项,最后重启 nginx。
搞定.
--------------
什么是 GFWInterceptor
GFWInterceptor 是 iPhone/iPad/iPod touch 设备上的自动代理插件,应用程序不需要支持API Proxy,也能够强制将请求通过第三方服务器中转。 现阶段已经能够适用于Twitter, facebook等不少应用。 GFWInterceptor 包括两个部分,第一部分为mobilesubstrate插件,用于拦截并将所有特定的http请求转发,第二部分为运行在GAE上的服务端版本,服务器仅仅做中转。其中第二部分基于 twitter-api-proxy 的代码实现 http://code.google.com/p/twitter-api-proxy/ 只支持越狱后的各iOS设备。不适用于 Safari 与 WebView 需要账号登录的部分。不能用于看视频。
客户端支持情况
Tweetings 有问题。其它一些采用网页 OAuth 的客户端应该在登录过一次后能行。Twitter for iPhone 因为 API 调用方式的关系会超出 GAE 的 Limit, 所以有些功能会时好时坏。 其余的客户端应该支持基本完美。
如何安装
在cydia中添加源
http://cydia.ifuckgfw.com
或者 http://gfwinterceptor.googlecode.com/svn/trunk/cydia (推荐后者)安装源内包既可,gfwinterceptor 依赖于 mobilesubstrate 和 preferenceloader。如果安装完毕没有在 Preference 中看到设置,说明没有正确安装。
内置服务器随时被墙,即内置默认的waytosing.appspot.com服务器,所以建议大家搭建自己的 api-proxy server (在本文末尾会介绍如何搭建GAE和PHP两种api-proxy server)
如何使用
安装后respring,gfwinterceptor即刻生效,可以试着打开 Twitter 应用直接使用(不用设置API,如果以前设置了可以去除)。在 Settings.app 会出现 gfwinterceptor 的设置选项。
FAQ
为什么我的 Twitter for iPhone 无法看 Profile, conversation 和 搜索? Twitter for iPhone 调用 search api,检查是否follow,查看profile的问题,是因为其软件自身设计的问题导致 (没有发出 Authorization Header),最彻底的解决方法是别用它了。 为什么不做 SBSettings 开关呢?因为 gfwinterceptor 的代码只有在程序启动时才会载入,而没有后台进程,所以不能制作 SBSettings 开关。包括一些会后台的应用,也得重启以后才能生效。
-------------进阶----------------------
GAE api-proxy server 架设方法
下载最新的GAE api-proxy server源程序:http://gfwinterceptor.googlecode.com/files/api-proxy-gae-v2-0.6d.zip
用Notepad++或者记事本打开 app.yaml
更改
application: waytosing
内的waytosing为你的GAE应用ID,例如
application:deepice-example
然后使用Google App Engine Launcher上传文件到GAE服务器.
此程序无需创建索引(Index)所以上传后即可直接使用,把你的服务器地址添入主力服务器替换原http://waytosing.appspot.com服务器重启iPhone即可.(用户名和密码不用管,因为GAE版没有此项功能.)
不过appspot服务器在国内已被墙,不出意外应该是无法直接访问的.所以需要写入iphone内的hosts文件.
使用iFunBox或者91之类的iphone文件管理软件进入iphone内 etc\hosts文件(请自行备份),使用文本编辑器打开在最后面另起一行添加
203.208.46.22 你的GAE_ID.appspot.com
例如
203.208.46.22 deepice-example.appspot.com
保存即可,文件权限644.
如果IP地址失效请在http://just-ping.com网站内查询g.cn的最新可用IP.
PHP服务器 api-proxy server 架设方法
服务器环境要求
服务器最好运行 Linux / FreeBSD 等操作系统,需要使用 apache httpd(nginx 有专用版本,请直接往下看),并且启用了 mod_rewrite,PHP 启用了 cURL支持。
下载/解压缩源代码
下载最新版的PHP api-proxy server源程序:http://gfwinterceptor.googlecode.com/files/api-proxy-php-0.6.zip解压后将 api-proxy-php 目录中的所有文件上传 / 移动到服务器相应目录。
文件配置
将 ~htaccess 文件改名为 .htaccess,之后用编辑器打开 users.config,按照文件中示范的每行一个用户名密码,用分号分隔的格式填入允许访问服务器的用户名密码。 不过需要注意的是,在默认 mime 情况下,apache 会把 users.config 当作文本文件,也就是说别人在浏览器输入 your.server/users.config 可以直接看到你的用户密码配置文件!临时解决办法是修改 index.php 第六行
$file_handle = fopen("users.config", "rb");
中的 users.config 位置,最好放到 http root 以外,比如改成 /home/gkp/gfw/users.config,之后把 users.config 移动到相应的位置就可以了。
开始使用吧
在安装好 GFWInterceptor 的 iDevice 上进入 Settings –> GFWInterceptor,将主力服务器设置成你安装 PHP 服务器端文件的地址,注意开头的 http:// 不要省略。在相应的位置填入上一步 users.config 中设定的用户名和密码,之后 respring 一下,打开 twitter for iPhone, Facebook, Foursquare 等应用试试看吧,没有问题的话应该可以顺利登录了。之后打开 safari,试试看 m.twitter.com,应该也是可以访问的。
有问题?
当安装 php-server 出现问题时,首先查看下 apache 的日志文件,如果都是类似于 File does not exist: /var/www/html/1 这样的报错的话,应该是 url rewrite 没有正常工作,请检查 apache 的 mod_rewrite 和 php-server 目录下面的 .htaccess 文件。
适用于 nginx 的版本
适用于 nginx 的 php 服务端程序目前还不支持用户名密码验证,安装方法如下:
下载 http://gfwinterceptor.googlecode.com/files/api-proxy-php-ngix-0.4.zip,并解压缩
把 api-proxy-php-ngix 目录下的文件上传/移动到服务器相应目录
把 gic 这个虚拟主机配置文件放到 nginx 会自动 include 的目录中,并编辑之,根据实际情况修改域名,文档目录等选项,最后重启 nginx。
搞定.
--------------
简述 GFWInterceptor的PHP服务器端的安装
2010/12/14 更新,适用于 api-proxy-php-0.5.zip,步骤简化了很多,推荐使用
0,服务器环境要求
服务器最好运行 Linux / FreeBSD 等操作系统,需要使用 apache httpd(nginx 有专用版本,请直接往下看),并且启用了 mod_rewrite,PHP 启用了 cURL支持。
1,下载/解压缩源代码
下载源代码压缩包:http://gfwinterceptor.googlecode.com/files/api-proxy-php-0.5.zip,解压后将 api-proxy-php 目录中的所有文件上传 / 移动到服务器相应目录。
2,文件配置
将 ~htaccess 文件改名为 .htaccess,之后用编辑器打开 users.config,按照文件中示范的每行一个用户名密码,用分号分隔的格式填入允许访问服务器的用户名密码。
不过需要注意的是,在默认 mime 情况下,apache 会把 users.config 当作文本文件,也就是说别人在浏览器输入 your.server/users.config 可以直接看到你的用户密码配置文件!临时解决办法是修改 index.php 第六行
$file_handle = fopen("users.config", "rb");
中的 users.config 位置,最好放到 http root 以外,比如改成 /home/gkp/gfw/users.config,之后把 users.config 移动到相应的位置就可以了。
3,开始使用吧
在安装好 GFWInterceptor 的 iDevice 上进入 Settings –> GFWInterceptor,将主力服务器设置成你安装 PHP 服务器端文件的地址,注意开头的 http:// 不要省略。在相应的位置填入上一步 users.config 中设定的用户名和密码,之后 respring 一下,打开 twitter for iPhone, Facebook, Foursquare 等应用试试看吧,没有问题的话应该可以顺利登录了。之后打开 safari,试试看 m.twitter.com,应该也是可以访问的。
4,有问题?
当安装 php-server 出现问题时,首先查看下 apache 的日志文件,如果都是类似于 File does not exist: /var/www/html/1 这样的报错的话,应该是 url rewrite 没有正常工作,请检查 apache 的 mod_rewrite 和 php-server 目录下面的 .htaccess 文件。
5,适用于 nginx 的版本
适用于 nginx 的 php 服务端程序目前还不支持用户名密码验证,安装方法如下:
- 下载 http://gfwinterceptor.googlecode.com/files/api-proxy-php-ngix-0.4.zip,并解压缩
- 把 api-proxy-php-ngix 目录下的文件上传/移动到服务器相应目录
- 把 gic 这个虚拟主机配置文件放到 nginx 会自动 include 的目录中,并编辑之,根据实际情况修改域名,文档目录等选项,最后重启 nginx。
- 搞定!
以下为老版本 php server 安装步骤,已经失效,仅供参考。
首先非常感谢 @overboming 同学连续两个晚上和我调试 GFWInterceptor 的 PHP 服务端,而且今天后来很长一段时间都是因为我的一个操作失误导致的错误,实在是很对不住 @overboming 同学,具体的这个操作失误在最后会提到,先来简单说一下安装的过程。
1,下载源代码
有两种方式,使用 svn:
svn checkout https://gfwinterceptor.googlecode.com/svn/trunk/api-proxy-php
或者直接到下面这个地址下载 index.php 和 .htaccess 这两个文件的 raw file
其中 svn 还是强烈推荐的,虽然文件可能要移动一下,不过这样可以确保在 copy / paste 时候不出错误。
2,代码安装
GFWInterceptor 的安装还是十分简单的,首先确认你的服务器使用的是 Apache httpd,并且开启了 mod_rewrite 支持,php 方面需要有 cURL 模块。没问题的话,把 index.php 和 .htaccess 这两个文件放到服务器的某个目录就可以了,完全不需要进行代码修改以及权限设置。
3,测试安装
首先在电脑上用浏览器打开一下 GFWInterceptor PHP server 所在的目录,看看有没有报错信息,显示白板一块就对了。如果报 error 500 internal server error 服务器内部错误的话,很可能是你的服务器 Apache 没有启用 mod_headers。如果你有操作 apache 权限的话,直接
sudo a2enmod headers
加载 mod_headers 的配置文件,并重新启动 Apache 即可。如果服务器不是你的话,那你只能退而求其次,将 .htaccess 中下面这段删掉了,副作用是 4sq 无法 check-in,facebook无法登陆。不过你可以将备用服务器(图床服务器)保留默认的 appspot.com 地址,0.61 以后版本的 GFWInterceptor 会将 4sq check-in 之类的请求直接走备用服务器。
#<Files ~ "*.php"> SetEnvIf content-type ([^m].*) NEW_CONTENT_TYPE=$1 SetEnvIf content-type (multipart/form-data)(.*) NEW_CONTENT_TYPE=multipart/form-data-alternate$2 OLD_CONTENT_TYPE=$1$2 RequestHeader unset content-type RequestHeader append content-type %{NEW_CONTENT_TYPE}e env=NEW_CONTENT_TYPE #</Files>
4,开始使用吧
在安装好 GFWInterceptor 的 iDevice 上进入 Settings –> GFWInterceptor,将主力服务器设置成你安装 PHP 服务器端文件的地址,注意开头的 http:// 不要省略。图床服务器则根据个人情况,有 mod_headers 的话完全也可以用自己的服务器。之后确认第一个选项在启动状态,保存退出,我这里需要 respring 一下,但是据 @overboming 说他那里则不用。
依次打开 twitter for iPhone,4sq,Facebook 试试看吧,目前这三个应用除了 4sq check-in 后的 mayor 皇冠等几个图片不能显示外,应该已经完美了。
5,关于安全
首先我认为所有 Fuck-GFW 的服务都应该保持 private,所有公开的服务都会在瞬间被干掉,经过我的实测,北京移动 edge 用户已经无法访问 GFWInterceptor 的默认 appspot 服务器了。所以我强烈建议自己搭建 GFWInterceptor 服务器的用户也将服务器保持私有状态,仅限自己和好友使用。更何况现在 GFWInterceptor 的服务端还没有验证机制,也就是说任何人只要知道你的服务器地址就可以用。大家可以将服务器路径设置的诡异一些,有条件的甚至可以在非标准端口上开一个虚拟主机,这样被猜到的可能性就大大降低了。
不过 @overboming 已经确认在下个大升级中将加入 token 验证机制,手机端转发请求时将在 HTTP_HEADER 中包含一个 token,服务器端收到后会先验证 token,没有问题才放行,届时安全性将大大改善。
最后一个建议,就是尽量使用 https 加密连接,twitter for iPhone 已经是全 OAuth,但是最新的 Facebook 登录时密码还是明文发送的,存在被居心不良的人截获的可能性。
最后说下我今天晚上犯的错误吧,我是直接在 Chrome 中复制代码,然后到 iterm 中 vi 粘贴,结果不小心在代码开头的 <? 前面多复制了一个空行,导致 twitter / Facebook 报告 xml 数据前有垃圾数据,折腾了好久,所以大家最好还是 svn 吧,最起码避免了复制代码出错的可能性。
基本安装就是这样,如果遇到问题可以留言或者在 twitter @gokeeper,我会尽我所能帮大家解决.
from http://b.gkp.cc/2010/08/17/setup-php-proxy-server-for-gfwinterceptor/