All Projects → oyyd → Encryptsocks

oyyd / Encryptsocks

Licence: bsd-3-clause
Encrypt your socks transmission.

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Encryptsocks

Netch
A simple proxy client
Stars: ✭ 10,297 (+7760.31%)
Mutual labels:  shadowsocks, socks5, socks
Brook
Brook is a cross-platform strong encryption and not detectable proxy. Zero-Configuration. Brook 是一个跨平台的强加密无特征的代理软件. 零配置.
Stars: ✭ 12,694 (+9590.08%)
Mutual labels:  shadowsocks, socks5, socks
V2ray Core
A platform for building proxies to bypass network restrictions.
Stars: ✭ 38,782 (+29504.58%)
Mutual labels:  shadowsocks, socks5, socks
Tun2socks
tun2socks - powered by gVisor TCP/IP stack
Stars: ✭ 123 (-6.11%)
Mutual labels:  shadowsocks, socks5
Flynet
A powerful TCP/UDP tool, which support socks5 proxy by tcp and udp, http proxy and NAT traversal. This tool can help you bypass gfw easily
Stars: ✭ 124 (-5.34%)
Mutual labels:  socks5, socks
V2ray Core
A platform for building proxies to bypass network restrictions.
Stars: ✭ 13,438 (+10158.02%)
Mutual labels:  shadowsocks, socks5
Jsocksproxy
SOCKS proxy written in Java
Stars: ✭ 19 (-85.5%)
Mutual labels:  socks5, socks
Socks5proxy
一个简单的socks5代理转发服务(VPN)
Stars: ✭ 71 (-45.8%)
Mutual labels:  shadowsocks, socks5
Free proxy ss
分享来自互联网上免费的shadowsocks(SS)/ShadowsocksR(SSR)/V2ray(vmess)代理 每15分钟更新一次,每次各分享4个临时可用代理。 及时订阅、及时更新。
Stars: ✭ 72 (-45.04%)
Mutual labels:  shadowsocks, socks5
Shadow
A transparent proxy for Windows, Linux, macOS
Stars: ✭ 85 (-35.11%)
Mutual labels:  shadowsocks, socks5
Shadowsocks Back China Pac
翻墙回国 Clash, PEPI, PAC 规则
Stars: ✭ 81 (-38.17%)
Mutual labels:  shadowsocks, pac
Shadowsocks Tutorial
🐱给小白的Shadowsocks和V2ray翻墙教程
Stars: ✭ 1,273 (+871.76%)
Mutual labels:  shadowsocks, pac
Proxyclient
proxy client, supported SOCKS4, SOCKS4A, SOCKS5, HTTP, HTTPS etc proxy protocols, written in golang
Stars: ✭ 42 (-67.94%)
Mutual labels:  shadowsocks, socks
Shadowsocks Php
A php port of shadowsocks based on workerman. A socks5 proxy written in PHP.
Stars: ✭ 869 (+563.36%)
Mutual labels:  shadowsocks, socks5
Shadowsocksx Ng R8
ShadowsocksX-NG-R for MacOS, ShadowsocksR
Stars: ✭ 1,066 (+713.74%)
Mutual labels:  shadowsocks, pac
Socksio
Sans-I/O implementation of SOCKS4, SOCKS4A, and SOCKS5
Stars: ✭ 27 (-79.39%)
Mutual labels:  socks5, socks
Ss Tproxy
搭建 SS/SSR/V2Ray/Socks5 透明代理环境的简易脚本
Stars: ✭ 1,561 (+1091.6%)
Mutual labels:  socks5, gfwlist
Freess
免费ss账号 免费shadowsocks账号 免费v2ray账号 (长期更新)
Stars: ✭ 6,544 (+4895.42%)
Mutual labels:  shadowsocks, socks5
Docker Dante Telegram
dante config builder for Telegram SOCKS-proxy & Dockerfile for building image with such proxy
Stars: ✭ 16 (-87.79%)
Mutual labels:  socks5, socks
Tcpsocks
Redirect traffic to SOCKS5 server with iptables, epoll based, single threaded.
Stars: ✭ 78 (-40.46%)
Mutual labels:  socks5, socks

encryptsocks

npm-version Build Status

Encrypt your socks transmission.

Why another Nodejs implementation?

Nodejs is a very good choice to achieve both flexibility and good performance in this situation.

And I have found that many of who are familiar with the original implementation may be curious about the memory usage so that I have finished some simple benchmarks to measure its behavior.

Benchmark

You can get the benchmark details here or even test your own implementation.

After some simple benchmarks that compare both the node and python implementation, my conclusion is:

  1. Node has a different GC strategy but it's, of course, able to keep thousands of connections with a reasonable memory usage. It's not a bug, it's a conscious time/space trade-off.

  2. Each request would cost less time to get responsed (even 50% less time in some situations).

  3. Node implementation is less likely to fail requests in high concurrency situation.

And the higher concurrency benchmarks may be meaningless as the bandwidth and network environment would become the actual bottleneck in the real world.

Do Please point out my faults if I have missed something or get something wrong.

Requirement

node >= v4

It's recommended to use node v6 to achieve better performance.

Installation

npm i -g encryptsocks

About the daemon

Encryptsocks use pm2 as the watcher process from 1.4.0.

CLI

Use localssjs (local ssjs) to start clients to communicate with applications. The localssjs server will also serve a pac file at http://127.0.0.1:8090 (by default) for your apps to avoid unnecessary tunnel work.

You may prefer to navigate clients page and choose clients for your devices instead of using localssjs.

Use serverssjs (server ssjs) to start your remote server.

Use localssjs -h or serverssjs -h to show cli options:

Proxy options:
  -c config                     path to config file
  -s SERVER_ADDR                server address, default: 127.0.0.1
  -p SERVER_PORT                server port, default: 8083
  -l LOCAL_ADDR                 local binding address, default: 127.0.0.1
  -b LOCAL_PORT                 local port, default: 1080
  -k PASSWORD                   password
  -m METHOD                     encryption method, default: aes-128-cfb
  -t TIMEOUT                    timeout in seconds, default: 600
  --pac_port PAC_PORT           PAC file server port, default: 8090
  --pac_update_gfwlist [URL]    [localssjs] Update the gfwlist
                                for PAC server. You can specify the
                                request URL.
  --level LOG_LEVEL             log level, default: warn
                                example: --level verbose
General options:
  -h, --help                    show this help message and exit
  -d start/stop/restart         daemon mode

Examples

Start clients that bind at 1088 and will connect to MY.SSSERVER.DOMAIN:

$ localssjs -b 1088 -s MY.SSSERVER.DOMAIN

Start daemon:

$ localssjs -d start -b 1080

Log verbosely:

$ serverssjs -d start --level verbose

Update GFWList for your .pac file server:

$ localssjs --pac_update_gfwlist

Update GFWList for your .pac file server from a specific URL (default url):

$ localssjs --pac_update_gfwlist http://firefoxfan.cc/gfwlist/gfwlist.txt

Config

{
  "serverAddr": "127.0.0.1",
  "serverPort": 8083,
  "localAddr": "127.0.0.1",
  "localPort": 1080,
  "pacServerPort": 8090,
  "password": "YOUR_PASSWORD_HERE",
  "timeout": 600,
  "method": "aes-128-cfb",

  "level": "warn",
  "localAddrIPv6": "::1",
  "serverAddrIPv6": "::1"
}

Specify your config file with -c flag:

$ serverssjs -c config.json

You can change default config in config.json file of your global package.

SOCKS5 Username Password Authetication

NOTE: This authetication is dangerous when sniffed.

Add auth property to your config.json and make forceAuth true.

{
  "auth": {
    "forceAuth": true,
    "usernamePassword": {
      "name": "password"
    }
  }
}

Optimizing

Encryption methods

  • aes-128-cfb
  • aes-192-cfb
  • aes-256-cfb
  • bf-cfb
  • camellia-128-cfb
  • camellia-192-cfb
  • camellia-256-cfb
  • cast5-cfb
  • des-cfb
  • idea-cfb
  • rc2-cfb
  • rc4
  • rc4-md5
  • seed-cfb

Test

$ npm test

Contribute

$ npm run watch

About the support to UDP relay

I intend to implement UDP relay and I have implement it. but I can't find an effective way to test this in real world networking. Please create issues to help us if you know any applications that support UDP-socks well.

License

BSD

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].