「Glype」

  CREATED BY JENKINSBOT

内容:网页代理,PHP实现,通过 cURL 实现。由于效率一般,我决定用 zephir 重写;

Homepage: https://www.glype.com/

Project: https://github.com/Abban/glype

Glype是如何工作的

1). Client 将请求的URL,编码或者加密(无法轻易还原)之后,发送到 Proxy;
2). Proxy 先解码URL,然后使用cURL函数库,请求 Target;
3). Target 响应以后,开始解析页面,解析目的是替换页面中的资源链接(替换资源属性,如img/src、a/href等);
4). 解析完成后返回页面给 Client,之后 Client Browser 就开始解析页面;
5). 如果页面中存在资源链接,重复执行上述过程;

扩展项目

原有的项目已经是5年前了(03/15/2017)。我重写了原有的项目,基于面向对象,同时加入了html、css新属性的支持。

共有两个版本:
PHP:http://git.oschina.net/demoii/glype
zephir:http://git.oschina.net/demoii/glype-zephir (原项目的重写还没有完成)

glype-zephir 是 glype 的 zephir 版本,由于性能原因而基于glype重新开发的项目。

项目的演示地址:http://andev.d3rm.org/browse.php?u=cUbOykRDC4P8SdBDcELVS4R9SkDgy4xOSnIzS4RDXoLbC6W8&b=5
Homepage: http://andev.d3rm.org

php 版本的 glype 吞吐量测试地址文件

# 的测试地址为 Andoid 开发者的官网地址。
# 首页、AndroidStudio、Develop、Simple、字体文件

http://andev.d3rm.org/browse.php?u=cUbOykRDC4P8SdBDcELVS4R9SkDgy4xOSnIzS4RDXoLbC6W8&b=5
http://andev.d3rm.org/browse.php?u=cUbOykRDC4P8SdBDcELVS4R9SkDgy4xOSnIUCYPgHlGOHlLgT12ZHYRASu%3D%3D&b=5
http://andev.d3rm.org/browse.php?u=cUbOykRDC4P8SdBDcELVS4R9SkDgy4xOSnIUCYPgHlGOT4PVCYP9T15ZHYRASu%3D%3D&b=5
http://andev.d3rm.org/browse.php?u=cUbOykRDC4P8SdBDcELVS4R9SkDgy4xOSnIgT1TDS6IfykDZT6Pry4VaSlf%3D&b=5
http://andev.d3rm.org/browse.php?u=cUbOykRDC4P8SdBDcELVS4R9SkDgy4xOSnIUilWfS6PUykDZT6Pry4VaSlf%3D&b=5
http://andev.d3rm.org/browse.php?u=vEGOT4IZCY5ZTdxai1Rzi9LtSkaOc9I9Sk7OC6GOCtNWyW7rlgzgSjzDSUxnx1zpT1VjTpVPPPTale7VveRlCWR7KkCzc4L3H6WlnjcZCkI4Ttq%3D&b=5

对 PHP 版本的 Glype 进行测试。

本次测试的地址:http://andev.d3rm.org%E3%80%82
测试的项目为:《Gype-PHP》
服务器环境:系统Linux;Nginx;PHP7;

吞吐量测试
测试工具:http_load
测试文件内容,点击查看。
测试命令:

存在问题

不完全是面向对象,这些是重写中比较尴尬的一部分。
即使是敏感字的base64编码以后,也过不了 GFW,但是这个问题通常很好解决。可以使用 Base64变体,就是修改编码字符顺序,参考Base64实现,也可以更换加密算法;