Python port of ShadowsocksR
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
clowwindy 1ab679b568 bump 12 years ago
.gitignore initial commit 13 years ago
.travis.yml Python 2.5 is no longer supported 12 years ago
README.md bump 12 years ago
config.json use random iv so we finally have strong encryption now 12 years ago
encrypt.py use random iv so we finally have strong encryption now 12 years ago
local.py bump 12 years ago
server.py bump 12 years ago
test.py fix test for python 2.5 12 years ago

README.md

shadowsocks

Build Status Current version: 1.2

shadowsocks is a lightweight tunnel proxy which can help you get through firewalls

Other ports and clients can be found here.

Warning: AES, DES, blowfish encryption methods are not implemented the same as other versions(Nodejs, etc) yet, please don't use those methods if you want to use Python version together with other versions!

usage

First, make sure you have Python 2.6 or 2.7.

$ python --version
Python 2.6.8

Then edit config.json, change the following values:

server          your server ip or hostname
server_port     server port
local_port      local port
password        a password used to encrypt transfer
method          encryption method, "bf-cfb", "aes-256-cfb", "des-cfb", "rc4", etc. Default is table

Put all the files on your server. Run python server.py on your server. To run it in the background, run nohup python server.py > log &.

Put all the files on your client machine. Run python local.py on your client machine.

Change the proxy setting in your browser into

protocol: socks5
hostname: 127.0.0.1
port:     your local_port

advanced

You can use args to override settings from config.json.

python local.py -s server_name -p server_port -l local_port -k password -m bf-cfb
python server.py -p server_port -k password -m bf-cfb

You may want to install gevent for better performance.

$ sudo apt-get install python-gevent

Or:

$ sudo apt-get install libevent-dev python-pip
$ sudo pip install gevent

troubleshooting

  • I can only load some websites
    Check the logs of local.py. If you see only IPs, not hostnames, your may got DNS poisoned, but your browser hasn't been configured to let the proxy resolve DNS.
    To set proper DNS config, you can simply install FoxyProxy / Autoproxy for Firefox, or ProxySwitchy / SwitchySharp for Chrome. They will set the config in your browser automatically.
    Or you can change network.proxy.socks_remote_dns into true in about:config page if you use Firefox.
  • I can't load any websites and the log prints mode != 1
    Make sure proxy protocol is set to Socks5, not Socks4 or HTTP.
  • I use IE and I can't get my proxy to work
    Since you can't specify Socks4 or Socks5 in IE settings, you may want to use a PAC(Proxy auto-config) script, or just use Firefox instead.