Skip to content

Latest commit

 

History

History

presets

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 

Presets

Presets are chaining and composable, built-in presets are listed here.

basic

shadowsocks

shadowsocksR

v2ray

obfuscator

others

You MUST provide one and only one preset signed with (*) to the presets list if you want to relay application data to dynamic destinations.

Import External Preset

If you have installed blinksocks by npm install -g blinksocks, you are free to use external presets:

Use public npm package:

$ npm install -g blinksocks-preset-demo
"presets": [{"name": "blinksocks-preset-demo"}]

Use private package:

"presets": [{"name": "/path/to/your/preset.js"}]

When use external preset, make sure that preset meets the requirements of the current Node.js environment.

To customize your own preset, please refer to Custom Preset.


A preset based on "ss-base" and provides a HMAC to ensure integrity for addressing part.

PARAMS DESCRIPTION DEFAULT
method a hash algorithm for creating HMAC sha1

method can be one of:

md5, sha1, sha256

"presets": [{
  "name": "base-auth",
  "params": {
    "method": "sha1"
  }
}, {
  "name": "ss-stream-cipher",
  "params": {
    "method": "aes-256-cfb"
  }
}]

This is a very basic preset which delivers the real destination address from client to server.

"presets": [
  {"name": "ss-base"}
]

The shadowsocks's stream cipher.

PARAMS DESCRIPTION DEFAULT
method encryption and decryption method aes-256-ctr

method can be one of:

aes-128-ctr, aes-192-ctr, aes-256-ctr,

aes-128-cfb, aes-192-cfb, aes-256-cfb,

camellia-128-cfb, camellia-192-cfb, camellia-256-cfb

rc4-md5, rc4-md5-6, chacha20-ietf, none

"presets": [
  {
    "name": "ss-base"
  },
  {
    "name": "ss-stream-cipher",
    "params": {
      "method": "aes-256-ctr"
    }
  }
]

NOTE: This preset should be combined with "ssr-auth-chain-*" presets when choose "none" method.

The shadowsocks's aead cipher.

PARAMS DESCRIPTION DEFAULT
method encryption and decryption method aes-256-gcm

method can be one of:

aes-128-gcm, aes-192-gcm, aes-256-gcm,

aes-128-ccm, aes-192-ccm, aes-256-ccm, (CCM mode require Node.js >= v10.2.0)

chacha20-poly1305, chacha20-ietf-poly1305, xchacha20-ietf-poly1305

"presets": [
  {
    "name": "ss-base"
  },
  {
    "name": "ss-aead-cipher",
    "params": {
      "method": "aes-256-gcm"
    }
  }
]

shadowsocksr auth_aes128 implementation.

"presets": [
  {"name": "ss-base"},
  {"name": "ssr-auth-aes128-md5"},
  {"name": "ss-stream-cipher", "params": {"method": "aes-256-ctr"}}
]

shadowsocksr auth_chain implementation.

"presets": [
  {"name": "ss-base"},
  {"name": "ssr-auth-chain-a"},
  {"name": "ss-stream-cipher", "params": {"method": "none"}}
]

v2ray vmess protocol implementation.

PARAMS DESCRIPTION DEFAULT
id client uuid -
security encryption method, client only aes-128-gcm

method can be one of:

aes-128-gcm, chacha20-poly1305, none

"presets": [
  {
    "name": "v2ray-vmess",
    "params": {
      "id": "c2485913-4e9e-41eb-8cc5-b2e7db8d3bc7",
      "security": "aes-128-gcm"
    }
  }
]

A simple obfuscator to significantly randomize the length of each packet. It can be used to prevent statistical analysis based on packet length.

"presets": [
  {
    "name": "ss-base"
  },
  {
    "name": "obfs-random-padding"
  },
  {
    "name": "ss-stream-cipher",
    "params": {
      "method": "aes-256-ctr"
    }
  }
]

A http obfuscator, the first request will wrap a http header randomly selected from a text file.

PARAMS DESCRIPTION DEFAULT
file a text file which contains HTTP header paris. -

file for example:

======================
GET / HTTP/1.1
Host: bing.com
Accept: */*
----------------------
HTTP/1.1 200 OK
Content-Type: text/plain
======================
POST /login HTTP/1.1
Host: login.live.com
Content-type: application/json
----------------------
HTTP/1.1 200 OK
======================
"presets": [
  {
    "name": "ss-base"
  },
  {
    "name": "obfs-http",
    "params": {
      "file": "path/to/fake.txt"
    }
  }
]

A TLS1.2 obfuscator, do TLS handshake using SessionTicket TLS mechanism, transfer data inside of Application Data.

PARAMS DESCRIPTION DEFAULT
sni Server Name Indication, a server name or a list of server name -
"presets": [
  {
    "name": "ss-base"
  },
  {
    "name": "obfs-tls1.2-ticket",
    "params": {
      "sni": ["cloudfront.net"]
    }
  }
]

This preset is based on ss-aead-cipher, but added random padding in the front of each chunk. This preset inherited all features from ss-aead-cipher and prevent server from being detected by packet length statistics analysis.

PARAMS DESCRIPTION DEFAULT
method encryption and decryption method -
info(optional) a string to generate subkey "bs-subkey"
factor(optional) random padding length = (0-255) * factor 2
"presets": [
  {
    "name": "base-with-padding",
    "params": {
      "salt": "any string"
    }
  },
  {
    "name": "aead-random-cipher",
    "params": {
      "method": "aes-256-gcm",
      "info": "bs-subkey",
      "factor": 2
    }
  }
]

Have trouble in choosing presets?

Here is a list of recommended conbinations.