Pages

Tuesday, 27 December 2011

KnProxy Lambda:一个结合KnProxy-APJP的翻墙代理服务器

KnProxy Lambda是KnProxy WEB代理的一个分支,它应用了JAVA和PHP合作的技术,为用户提供全面的平衡的代理。Java客户端和PHP服务端之间的通信通过高级的加密算法加 密,同时流量被分散到多个服务器来避免流量分析。KnProxy Lambda能提供强于KnProxy的全面网络代理服务。可以完美支持POST,GET,和AJAX请求。同时KnProxy Lambda还兼容apjp服务器,可以直接使用已有的APJP服务器并用其分担流量,扩大网络范围,方便用户迁移。

以前的KnProxy代理请参考:自建安全翻墙代理服务器 KnProxy教程

KnProxy Lambda官方项目主页:

http://sourceforge.net/projects/level5/

http://freshmeat.net/projects/knproxy-lambda

官方版本下载:KnProxy Lambda v5

2011-07-18 服务器v5.00 下载:
http://sourceforge.net/projects/level5/files/Server/knproxy_lambda_server_apjp_v5_00.zip/download

2011-10-26 客户端v5.00RC2 下载:
http://sourceforge.net/projects/level5/files/Client/knproxy_lambda_client_v5_00_RC2.zip/download

概述:

简单说来,KnProxy Lambda是结合KnProxy和APJP的一个网页代理,先后对而言,因为有客户端图形界面程序,更易操作,设置也比较简单。

步骤就是:第一步,找到一个服务器空间,上传配置好的KnProxy程序;第二步,配置客户端,第三步,浏览器代理设置;

下面介绍详细的使用方法:

(一)搭建KnP V5 服务端:

搭建KnP V5 服务端:

1. 准备工作:
KnP V5需要用到php的sockets和rc4加密模块,所以说并不是所有的服务器都兼容。如果您搭建后无法正常运行,请更换服务器(这里特别推荐 000webhost 这个免费服务器,速度还不错,搭建也比较成功)。

按照上述地址,下载最新版本,将文件解压缩,里面是 4个文件。

因为KnP V5目前使用的APJP服务器程序,搭建KnP V5服务器端与APJP差不多,详细请参考:
安全翻墙APJP:基于PHP和JAVA的代理构建最新版教程

下面是简要的主要步骤介绍,按照这个一步一步配置也行:

2. 配置密码:

为了保证传输不被 a)第三方盗用 b)GFW阻挡,建议你不要用默认的密码。
打开压缩文件的 HTTP.properties.php 里面只有一行:

$APJP_KEY = ‘MisakaMikoto’;

把这个改成你自己的密码即可(长度在 5-16 个字符即可,由于美国对强加密算法出口规制,超过16位的RC4加密需要安装特殊JAVA配置文件,为了避免客户端不能解密,建议密码短些,我们的目标不是搞的多安全而是能PASS掉GFW)。

3. 架设

超简单,请在服务器新建文件夹,上传即可!

4.常见问题
有的时候架设后客户端也配置正确可能无法使用,这些情况下可能是
a) 您的服务器供应商不允许使用php sockets或者加密(能用KnP V4de 服务器不一定能支持v5)
b) 您的密码太长,JAVA客户端不能解析
c) 页面可以出现,底部有乱码:您的服务器可能会自动追加广告信息等,请忽略掉就是了…后续版本会致力解决这个问题

在上面配置好服务器端后,再配置好客户端就可以使用自建的安全代理服务器了。

(二)KnProxy Lambda 客户端使用说明

1. 预备工作

KnProxy V5的客户端基于Java编写,电脑上必须安装有足够新的 Java 虚拟机。
最新的Java虚拟机可以在:http://www.java.com/zh_CN/download/ 获得。

2. 客户端的图形界面程序与添加服务器

作者设计了客户端的图形界面程序,相当的方便。 在自己的电脑上解压最新的客户端程序后,双击运行其中的 KnProxyV5.exe 即可。
如果不是 Windows系统,请打开终端,输入 java -jar KnProxyV5.jar 也可以。如果您的Java版本不够高,Windows用户会得到提示。

运行KnProxyV5.exe后的 KnProxy V5 运行界面如图所示:

KnProxy的用户界面很直观,分为菜单、启动状态、服务器列表,操作按钮。

默认的KnProxy带有2个供测试用的服务器,为了安全起见,可以删除之,然后通过左下角的“添加服务器”按钮来添加自己的服务器。

请注意:服务器删除会立即生效,但是添加服务器需要重新启动代理软件。

其实客户端配置也就这一步,把自己的服务器添加上去就好,不需要更多设置,然后,点右下角的“启动”按钮,你会看到服务器状态变为 “已启动(监听 127.0.0.1:5000)” 。

请记住KnProxy的代理是:127.0.0.1:5000,余下的就是在浏览器中设置代理。

4. 浏览器代理设置

如上所述,我们要使用KnProxy代理,在自己的浏览器中要设置“代理服务器”:127.0.0.1 “端口”:5000.

如果要缩小KnProxy的窗口,请打开点“文件”– “收缩到任务栏”。收缩后,双击任务栏图标即可还原。

5.在上述所有配置完成后,与平时一样,在浏览器中输入网页地址就可以代理上网了。

上网的代理ip情况可以打开美博园ip查询页检测:美博园 上网IP地址参数 检测

最后补充官方介绍的特点:

KnProxy Lambda 基于KnProxy的浏览内核 KnHTTP 模块的改进版,KnProxy V5 将会让更多的免费空间也能够使用高级的代理服务。

KnProxy V5的处理引擎将参考 APJP( A PHP/Java Proxy)的运行模式,采取客户+服务器端双处理的模式。客户端由Java编写的Proxy将会对浏览器请求捕捉,处理,加密,测速并发送到指定的的服务器列表中的服务器上。服务器则将请求传达,获取结果,加密,传回KnProxy客户端。

增强的RC4加密:相比于KnProxy那幼稚的“地址混乱化”KNEN加密,RC4加密大大提升了传输的安全程度,而且请求和回应双向加密,很安全。群过程采取了 RC4 或 KNEN 加密,动态密钥,保证数据不会被劫持。同时用cURL 模块部分解决了 APJP 的 HTTPS 问题。

允许把压力分担到多个服务器:在原来的情况下,如果连续访问国外主机,往往会出现被 Connection Reset 的危险,不管是不是传输比较敏感的信息。KnProxy V5 客户端将允许设立服务器列表,访问网站会根据用户设定的优先级,服务器速度综合选择合适的服务器。新的模式允许在你设定的代理服务器之间随机跳动,不是对一个服务器使劲用,所以大大减小了被流量监测的危险,请求被分担到了多个服务器,所以大大降低了服务器的负担,增加了隐私度。

新的客户端模式还会允许用户在服务器列表枯竭时,从一个指定的服务器获取新的服务器更新,时时保持代理畅通。全线突破GFW的阻碍。列表每次获取有限,而且不允许直接获取,避免GFW 内部人士借以嗅探 KnProxy 服务器。

兼容APJP:服务器使用的是APJP的服务器端,KnProxy V5将全线兼容 APJP 服务器,允许用户使用已经架设好的 APJP服务器与优化的服务器选择规划算法结合,得到理想的速度。

缩到任务栏:避免代理窗口妨碍视线,所以可以缩到任务栏。双击就可以打开了。

以上根据官方介绍和自己的使用情况整理。如有什么问题,请使用者反馈,以便反馈作者改進。谢谢作者jabbany为大家提供好的翻墙工具.(我未测试)
---------------------------------------------------
自建安全翻墙代理服务器KnProxy

一 KnProxy简介:
KnProxy是一个基于PHP的网页代理系统。它应用了PHP内置的cURL模块进行HTTP请求。在使用最有限的服务器资源的前提下,KnProxy会尽量大的实现高效。KnProxy设计用于简单的日常代理,并不将信息(如广告、JS、CSS)注入特定页面/位置。对于页面的改动会尽可能控制在仅仅改变页面的链接使其继续被KnProxy代理。当然URL会被加密来避免不和谐的第三方试图追踪访问纪录或是对特定关键字进行筛查什么的。KnProxy可以用于那些网络并不完全开放的位置,比如:单位、学校、中国GFW的封锁。

KnProxy的几点优势:
1. 采用PHP内置的cURL模块:传统Web代理系统多数使用SOCKET或者file函数来获取远程文件,但是许多免费Web空间禁止了这些函数的远程访问或者完全禁用了SOCKET之类底层操作。KnProxy使用了PHP自带的cURL模块,针对性的解决了这个问题。
2. 模块封装:传统代理脚本采取的都是单文件或者为了避免代码抄袭,无规则分块(Glype)。KnProxy则有别于这些代理服务把内部模块拆成了如若干功能:
module_parser : 用于将现在的WEB页面解析/分析并把链接改掉
module_url : 用于将相对地址处理成绝对地址(进行简单的URL加和)
module_http : 用于发送HTTP请求
module_encoder : 用于实现地址加密
用户可以根据自己的需求来更改或者重新编写各个模块,而无需将整个脚本阅读明白。我们可以通过替换 module_http 来在不支持cURL的空间上,使用file_get_contents等命令获取文件。这样大大降低了修正的难度。
3. 无需配置:直接上传就能用
4. 无识别性特征:网站无法判断访问请求来自代理
5. 调试模式:如果访问失败,用户可以在地址中加入 debug=true的 GET请求,这样就能获取一个HTTP对象的dump来分析错误产生的部位
6. 不设繁琐复杂的检查机制:KnProxy是轻量级的代理,没有设置用户验证和滚动地址等模块,减轻服务器负担同时加快请求。
7. 可以在很多免费空间自建代理。让GFW去死吧!
二 项目主页及下载:
官方工程地址:http://sourceforge.net/projects/knproxy
Freshmeat下的该工程:http://freshmeat.net/projects/knproxy
最新开发版本:https://github.com/jabbany/knProxy

Ver4.40
1. 支持基于Etag和Modified日期的缓存(缓存工作本身交给客户端处理)
2. 修正了很多MIME判定BUG,放行video/*, audio/*, application/*(非application/javascript) 不经过解析器,大大减少了服务器试图解析二进制文件而内存溢出脚本终止,产生下在错误。
3. 重新编写了HTTP请求模块,使其支持更多的Header和更灵活的请求。目前还包括一个基于Web Sockets的备用请求体系(当cURL不可用但Web Sockets可用时才会选择)[注意:该体系只有对URL有限的支持,不能处理HTTPS和 POST且对chunked回复有些BUG]。
4. 修正了Cookie管理器的诸多BUG,能删除所有的Cookie了(似乎)。并且更新了一些about: 页面。Cookie管理器目前有中文和英文的支持,会根据设定语言进行选择。
5. 引入流模式,(stream:您的URL)服务器先把文件下载到硬存储,然后以文件流输出。这样避免文件超出PHP内存大小限度而失败。
6. 新的大小限制:MEMORY=128MB Time_limit=180s,避免大文件出问题,大于64MB 的(二进制)文件请换stream下载。等等
Ver 4.36增加'Cookie'管理等
Ver 4.33修正了加密模式偶尔出现的bug,改变了随机key生成等
V4.19更新:
-解决了一些在PHP使用严格模式下,显示WARNING导致 HEADER无法发送、文件下载坏掉的问题。
-允许在conf.php设置一个加密SALT,来让服务器有自己独特的地址加密,防止侦破
-根据设置,在传输 text/* 的类型时,自动采取GZIP压缩模式,节约带宽
-检测页面编码,如果不是UTF-8转成UTF-8再加密页面
别着急,最精彩的内容在下面

三 自建 KnProxy 服务器教程:
要自己建立一个KnProxy代理服务器十分简单,因为KnProxy的轻量级,不需要设置,在很多的免费空间上都可以使用。简单来说,就是只要上传KnProxy到主机空间上,马上就可以使用,就这么简单。
1. 寻找有效的WEB空间及要求
这一步是关系到代理是否能成功的最终要因素,能成功搭建KnProxy,服务器需要下面的几个必要条件:
a) 是PHP服务器(支持动态的)。
b) 应该支持PHP自带的cURL模块。
你要是不确定的话,可以尝试将
< ?php if(function_exists('curl_init')){echo 'cURL Installed';}else{echo 'No Curl';}?>
写到一个脚本里,看看运行后结果如何。如果是 cURL Installed 则表示有cURL的支持能力。
c) 应该允许访问外网。光有cURL,要是服务器不允许你的脚本进行联网也是不行的。你也可以尝试用KnProxy随便访问一个有效地址,选中“直接进入调试模式”。如果看到返回信息都是空的,而网站你能访问,那么估计就是服务器禁止访问外网。
d) 服务器在墙外。这个不用说了,必须的啊~
2. 架设代理服务器
实在是超级简单,把下载到的KnProxy上传到服务器即可,不需要任何设置。
不过对于高级用户,有些配置可以用于改善您的体验。请打开conf.php

define('KNEN_SECRET','/VtPW1:s6Gm|C5V1Ov:dS.zUynNTZSFv54+ZztvSgtM4Fd|=dyS4I');
define('USE_GZIP','true');
define('ALLOW_YOUTUBE','true');

KNEN_SECRET是一个随机字符串,长度任意,用于加密地址,设置成自己的即可防止被解密。
USE_GZIP表示是否输出为压缩文档,如果设定为true,所有的文本网页均会被GZIP压缩(图片等不在此列)。
ALLOW_YOUTUBE表示是否启用视频捕获机制,要看youtube可以启用这个。不过这个机制不太成熟,启用了也不一定就能youtube上。
3. 自己的代理网址
不管是自己的域名或者是免费空间的二级域名,都可以,只要将KnProxy上传后就可以用自己的域名访问代理网站了。
比如,域名是: abcd.com ,上传的目录是KnProxy
那么,在浏览器输入地址就OK了,怎么输入 abcd.com/KnProxy
四 常见问题与解决
a)大白页(什么都没有):用浏览器查看页面源代码,如果返回 进行调试。
b)只有试图代理时才大白页,墙内网站也无法代理:可能是您的服务器不支持cURL,你可以尝试 debug 一下(调试模式)。如果空白的话,估计服务器不支持cURL的。
c)代理访问墙内网站没事,墙外则白页或连接被重置:可以试试页面加密。
d)出现PHP的WARNING或/ERROR:可以根据内容自己尝试调试,或者检察是否上传完整.
--------

KnProxy

Lightweight, PHP-based Web Proxy that can utilize whatever remote connecting ablities your server has to offer. It should work out of the box. No configuration needed. For educational purposes.

http://www.sourceforge.net/projects/knproxy

KnProxy is a lightweight, PHP-based web proxy that uses either cURL or PHP Sockets to proxy HTTP/HTTPS connections on a remote machine. It was created to achieve a high compatibility and ease of deployment and serves as a means to bypass the China GFW.

It should work out of the box without modifications, though you can fine tune it to fit your specific needs. Aside from the connecting ability module (which requires at least one of cURL, PHP Sockets or remote file reading to be available), KnProxy does not rely on any other additional PHP extensions (Although optional page compression requires the compression module for PHP to be enabled). KnProxy includes a document parser, url parser and session management module all self contained.

KnProxy 某个诡异的网页代理

KnProxy是一个轻量级的,基于PHP的网页代理。采用cURL或者PHP Sockets来将HTTP/HTTPS流量重新导流。KnProxy的设计意在实现最高的兼容性和最简单 的架设。KnProxy可用于临时快速架设一个穿越G-F-W的安全的网络代理。

KnProxy一般不需要任何更改就可使用,不过你可以在设置中对其进行微调。

from https://github.com/jabbany/knProxy