简述 GFWInterceptor PHP 服务器端安装

作者:

g_f_w

首先非常感谢 @overboming 同学连续两个晚上和我调试 GFWInterceptor 的 PHP 服务端,而且今天后来很长一段时间都是因为我的一个操作失误导致的错误,实在是很对不住 @overboming 同学,具体的这个操作失误在最后会提到,先来简单说一下安装的过程。

1,下载源代码

有两种方式,使用 svn:

svn checkout https://gfwinterceptor.googlecode.com/svn/trunk/api-proxy-php

或者直接到下面这个地址下载 index.php 和 .htaccess 这两个文件的 raw file

http://code.google.com/p/gfwinterceptor/source/browse/#svn/trunk/api-proxy-php

其中 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,我会尽我所能帮大家解决。


没有评论: