Total Pageviews

Sunday 7 February 2016

APJP:基于PHP和JAVA的代理程序

APJP分为两部份,客户端和服务器端,其中客户端由JAVA语言编写,服务器端以php语言编写。

APJP是一个基于php+JAVA简单实用操作方便的免费代理程序。需要客户端+服务端来配合完成代理的功能。效果还不错,是目前一个比较完善的自建代理工具,推荐大家使用。根据作者介绍:APJP更新到0.8.1,这版本和以往的有着不同,把APJP分为APJP_REMOTE ,APJP_REMOTE_APPENGINE , APJP_LOCAL ,APJP_LOCAL_ANDROID 和APJP_KEY ,这五个文件合组成APJP全部,可以选择搭建于PHP、GAE、手機或平板電腦平台上,根据自己的需要進行选择。

请注意:
APJP-0.8.1版起有重大调整,请看后面的详细安装说明。
APJP-0.8.9版起更新PHP、GAE、手機或平板電腦的安装指南.

APJP的官方项目主页:
http://code.google.com/p/apjp/

更新与下载
2011年12月22日 更新 APJP_LOCAL-0.8.9版
作者已加入伪造证书功能,自动生成证书,导入APJP.pem后浏览器后https网站不会再提示证书错误。
安装说明:请参考本帖下面最新安装说明。
官方下载地址:
http://apjp.googlecode.com/files/APJP_LOCAL-0.8.9.zip
http://apjp.googlecode.com/files/APJP_REMOTE-0.8.4.zip
http://apjp.googlecode.com/files/APJP_KEY-0.1.0.zip

使用APJP所需条件:
1,一个没有被墙的国外php空间,免费付费均可。空间条件下面有介绍,因是目前主机基本都具备的常规条件,这个基本上没有问题;
2,必须安装JAVA才能使用:
JAVA官方最新版下载:http://www.java.com/zh_CN/download/manual.jsp

使用体会:
APJP确实是一款好的代理程序,打开网页基本上不出问题;
要是国外朋友提供服务器,国内被墙的朋友使用专门的客服端,不失为一种隐蔽的翻墙好办法;
要说不足的地方嘛,也有二点:一是ssl支持不好,这个急需改进;二是客服端没有图形界面,这个有没有实际上问题不大。

使用时注意的地方:
在代理运行过程中,不要关闭该客服端运行时的CMD窗口,关闭该窗口即停用代理。同时在该窗口中,也能看到具体的数据信息。
如何获取APJP源码
为了总是获取官方的最新版本,建议采用SVN同步获取源码,地址: http://apjp.googlecode.com/svn/trunk/
关于SVN的使用,可以借助搜索引擎,也可以参考官方的PDF说明文档;

APJP个人代理简介
在中国,出于众所周知的原因,访问网页很多时候需要使用代理,而APJP是一项开源代理项目,是非常适合国人使用的代理工具.
APJP分为两部份,客户端和服务器端,其中客户端部份由JAVA语言编写,服务器端以php语言编写.客户端是一个本地代理,通过和远端服务器连接,以 RC4 128bit 加密通讯,达至一个比较完整的代理方案.其方式运作如下:
IE/Firefox/Chrome --> APJP客户端 --(加密数据)--> APJP服务器 --> 目标网站
请求发出后得到的数据由原路返回本地的IE/Firefox/Chrome
IE/Firefox/Chrome <-- APJP客户端 <--(加密数据)-- APJP服务器 <-- 目标网站
APJP不同于流行的代理方案,使用者必须自行安装服器端到远端主机,它的优势如下
1) 每个APJP使用者的服务器不一定相同,这对于"流量分析"难以察觉,不会因为过大数据流量涌向同一服务器而引起注意
2) 不依赖特定平台,例如 Google Applications Engine, 只要主机支持 OPENSSL >= 0.9.6, PHP >= 5.0.0 和 MCRYPT >= 2.5.6 就可部署,这差不多是Cpanel网页空间的"默应配置",不 会因为特定平台被封锁而无法使用
3) 内容检测或是关键字检测(keyword filtering)是网络封锁其中一个手段,APJP以128位RC4加密数据, 且每个密钥不尽相同,随机产生,可以有效对抗这些封锁,不会因为加密特征相同,一旦密钥被破解,而导至所 有APJP服务器加密的内容暴露
为什么要使用APJP?
1) APJP是开源代理项目,每个人都可得到原代码阅读,修改,这保证了代理没有"后门",泄露用户的私隐
2) 免费,程序本身免费,可能需要付费的是搭建的网页空间,当然也可使用免费的网页空间搭建
3) 对于一些地区,国家,APJP是把"完整的互联网"带回给使用者,可自由访问网络
什么时候,什么人需要使用APJP?
1) 网络封锁,内容过滤的网络,上网者需要不同信息,就需要APJP代理方案
2) 需要隐藏真实IP的时候,APJP也能帮助你匿名访问,APJP还可以设置http/https代理连接APJP 服务器,成为多级代理,可有效保护个人私隐.
---------------------- 最新版0.8.9 PHP平台官方使用指导 --------------
以Windows 7为例,Linux / Mac上的区别,会指出的
要求
支持PHP版本:5.0.0 或以上
支持MCRYPT版本:2.5.6 或以上
支持OpenSSL版本:0.9.6 或以上
一般常见的Cpanel Web Host 多数适合部署APJP的PHP服务器
文件
http://apjp.googlecode.com/files/APJP_KEY-0.1.0.zip
http://apjp.googlecode.com/files/APJP_LOCAL-0.8.9.zip
http://apjp.googlecode.com/files/APJP_REMOTE-0.8.4.zip
点击即下载,下载后解压
安装Java, Java官方最新版下载: http://www.java.com/zh_CN/download/manual.jsp
生成Key
转到APJP_KEY目录,双击APJP_KEY.bat(Linux / Mac上运行APJP_KEY.sh),会显示一个APJP的密钥,类似APJP_KEY=FkPMd40j6vzfsEbf

编辑HTTP.properties.php 和HTTPS.properties.php
编辑APJP_REMOTE目录中的HTTP.properties.php 和HTTPS.properties.php,右键,打开方式,选择记事本(图例使用Notepad++,文本编辑器都可)打开。查找
$APJP_KEY = '';
以上述的APJP密钥作为例子,修改为
$APJP_KEY = 'FkPMd40j6vzfsEbf';
保存文件变更并离开.

上传
登 录Cpanel Web Host, 通常会提供一个file manager作为上传文件的媒介,或者在本地使用ftp客户端,把HTTP.php, HTTP.properties.php, HTTPS.php和HTTPS.properties.php上传到主机的/public_html, 有些非Cpanel web hosting的主机可能提供SSH登录,也可使用scp上传文件,但目录名字可能不是public_html,而是其他的目录名字.例如www,可用以 下命令上传.假设APJP_REMOTE在$HOME目录cd ~/APJP_REMOTE ; scp HTTP.php user@host:~/www/ ,这样就把文件上传到主机。

这就完成部署PHP平台上的服务器端,自APJP-0.8.0以后,已支持最多10个服务器,如果部署多余一个主机,除不需要再执行APJP_KEY.bat之外,其他步骤相同,请使用同一个APJP密钥.
编辑APJP_LOCAL/APJP.properties
编辑APJP_LOCAL/APJP.properties,右键,打开方式,选择记事本(图例使用Notepad++,文本编辑器都可)打开。


详细的配置Role Of Configurations-
http://code.google.com/p/apjp/wiki/RoleOfConfigurations

使用
双击APJP_LOCAL/APJP.bat(Linux / Mac 运行APJP.sh),会看到APJP在自行测试连接服务器的讯息,如果正常会有12个“OK”.

这表示APJP已经运行并连上服务器,但需要在浏览器进行简单设定,数据会经由APJP服务器流通
在Firefox中代理选项中,设置HTTP PROXY 为127.0.0.1 端口为10000,SSL PROXY也是127.0.0.1 端口10000
IE Internet设置->连接->局域网设置(L)其旁边的一段话【LAN设置不应用到拨号连接。对于拨号设置,单击上面的“设置”按钮】, 如需设置和局域网设置(L)一样。->勾选“为LAN使用代理服务器”地址:127.0.0.1 端口:10000
Firefox可使用Autoproxy(https://addons.mozilla.org/en-US/firefox/addon/autoproxy/) 扩展,选择性使用代理
Google Chrome建议使用扩展 SwitchySharp 【项目Wiki地址https://code.google.com/p/switchysharp/wiki/SwitchySharp_GFW_List_2 】或Proxy Switchy!【Chrome Web Store地址 https://chrome.google.com/webstore/detail/caehdcpeofiiigpdhbabniblemipncjj?hl=zh-CN&hc=search&hcp=main 】

补充:
APJP为web tunnel的实现,对于HTTPS连接会出现证书警告.

故在APJP_LOCAL-0.8.4版本,增加IAIK_JCE.jar并会随机生成APJP.pem导入浏览器内可解决证书警告问题。
以下为Windows 7版 Google Chrome的导入方法:
首先运行APJP_LOCAL/APJP.bat,设置好浏览器代理,打开https://www.google.com/ncr (或者其他任何 https:// URL),出现证书警告。同时APJP_LOCAL目录中生成APJP.pem 和APJP.jks,接着如下操作:
a.选项(O)->高级设定->HTTPS/SSL->证书管理(Chrome调用的是系统的证书,即IE上不需要再导入证书)
b.点击“证书管理”->选择“受信任的证书颁发机构”->点击“导入(I)”
c.打开并指向APJP_LOCAL/APJP.pem

e.其他浏览器例如:Firefox设置导入证书大致相同
注意 : 每次更新APJP,都要删掉上次APJP的证书文件,再导入APJP.pem。因为证书是运行程序后自己生成的,具有唯一性。

终于设定好了,原来一直出错是因为在设置LOCAL端的那个文件,HTTP.php文件名是大写的,而我在设置的时候没有认真看,我把它写成了小写,仔细看了好久的出错说明,才发现问题.


相关帖子: http://briteming.blogspot.com/2015/09/jap-jssocks5.html,
http://briteming.blogspot.com/2012/02/apjp.html