Intro
This project can take you through a Firewall via Socks5 proxy.
Features
with the great erlang, the project has the following features:
- socks5 / http proxy. (https not supported)
- Robustness. never down.
- Scalable. handle thousands requests at the same time easily.
- Fast.
- Lightweight. only takes less than 20MB memories.
Running status
In my daily use, (1 cpu, 512MB RAM VPS)
- Play 2 youtube 1080P video at the same time, It only takes 16MB memories.
Illustrate
+------------+ +--------------+
| local app | <=======> | proxy client | <#######
+------------+ +--------------+ #
#
#
# encrypted data
#
#
+-------------+ +--------------+ #
| target host | <=======> | proxy server | <#####
+-------------+ +--------------+
proxy client
is running at your local computer.It receive your app (like a browser) request, encrypt the data, send toproxy server
proxy server
receive the request fromproxy client
, decrypt it, and sent to the target host.proxy server
got the response from target host, then encrypt response, send back toproxy client
.proxy client
decrypt response received fromproxy server
, and send to local app.- the circle done.
Usage
Server side
git clone https://github.com/yueyoum/make-proxy.git
or directly download.cd make-proxy
cp server.config.example server.config
,- port. which port that the server listen on
- key. key to encrypt/decrypt data 16bytes
make server
(注意:如果运行
make server遇到错误,其实是这程序自带的rebar可执行文件有问题。我把它删除了。
root@AR:~/make-proxy/server# ls
rebar rebar.config src
root@AR:~/make-proxy/server# rm rebar
root@AR:~/make-proxy/server# ls
rebar.config src
root@AR:~/make-proxy/server# rebar compile
这样,输出的结果里没有错误。在客户机器里,也是类似做法:
yudeMacBook-Air:make-proxy brite$ ls
ChangeLog client.config start_client.sh
LICENSE client.config.example start_server.sh
Makefile include utils
README.md server
client server.config.example
yudeMacBook-Air:make-proxy brite$ cd client
yudeMacBook-Air:client brite$ ls
rebar rebar.config src
yudeMacBook-Air:client brite$ rm rebar
yudeMacBook-Air:client brite$ ls
rebar.config src
yudeMacBook-Air:client brite$ rebar compile
这样,输出的结果里也没有错误。 另外, key 必须是 16字节,也就是说,得是一个 包含16个 char 的字符串,比如把 key 设置成 1234567890abcdef这样。rebar的安装见此文http://briteming.blogspot.jp/2015/11/shadowsockserlangshadowsocks-erlang.html的“rebar环境的搭建”部分)./start_server.sh (建议运行
erl -pa server/ebin -config server +K true -s make_proxy_server start -detached即可。)
Local side
- same as the Server side, checkout the code.
cd make-proxy
cp client.config.example client.config
- remote_addr. IP of the compute where
make-proxy
server runs - remote_port. PORT that make-proxy server using. SAME as the defination of
server.config
. - local_socks5_port. this port is used for socks5 proxy.
- local_http_port. this port is used for http proxy.
- key. key to encrypt/decrypt data. this MUST AS SAME AS the defination of
server.config
.
- remote_addr. IP of the compute where
make client
./start_client.sh (建议运行:
erl -pa client/ebin -config client +K true -s make_proxy_client start -detached即可。我运行./start_client.sh时,遇到错误)
Now, you can set your apps (e.g. Browser) Using socks5 proxy.
IP =
127.0.0.1
PORT = 7070
(if not changed in the client.config)TODO
- Support Socks5 Username/Password Authorize
from https://github.com/yueyoum/make-proxy