TCP Transport

TcpObject

{
  "header": {
    "type": "none"
  }
}

header: NoneHeaderObject | HttpHeaderobject

Header obfuscation. Default value is NoneHeaderObject.

NoneHeaderObject

No header obfuscation.

{
  "type": "none"
}

type: "none"

Disable header obfuscation.

HttpHeaderObject

HTTP header obfuscation. The configuration must be the same between connecting inbound and outbound.

{
  "type": "http",
  "request": {},
  "response": {}
}

type: "http"

Enable HTTP header obfuscation.

request: HTTPRequestObject

HTTP request template.

response: HTTPResponseObject

HTTP response template.

HTTPRequestObject

{
  "version": "1.1",
  "method": "GET",
  "path": ["/"],
  "headers": {
    "Host": ["www.baidu.com", "www.bing.com"],
    "User-Agent": [
      "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36",
      "Mozilla/5.0 (iPhone; CPU iPhone OS 10_0_2 like Mac OS X) AppleWebKit/601.1 (KHTML, like Gecko) CriOS/53.0.2785.109 Mobile/14A456 Safari/601.1.46"
    ],
    "Accept-Encoding": ["gzip, deflate"],
    "Connection": ["keep-alive"],
    "Pragma": "no-cache"
  }
}

version: string

HTTP version. Default value is "1.1".

method: string

HTTP method. Default value is "GET"

path: [ string ]

HTTP path. An array is string. The path will be chosen randomly for every connection.

headers: map{string, [ string ] }

HTTP header. The key of each entry is the key of HTTP header. The value of each entry is a list of strings. The actual HTTP header value will be chosen randomly from the list for each connection. Default value is the values in the example above.

In a connection, all keys in the specified map will be set to the HTTP header.

HTTPResponseObject

{
  "version": "1.1",
  "status": "200",
  "reason": "OK",
  "headers": {
    "Content-Type": ["application/octet-stream", "video/mpeg"],
    "Transfer-Encoding": ["chunked"],
    "Connection": ["keep-alive"],
    "Pragma": "no-cache"
  }
}

version: string

HTTP version. Default value is "1.1".

status: string

HTTP status. Default value is "200"

reason: string

HTTP status message. Default value is "OK".

headers: map{string, string}

HTTP header. The key of each entry is the key of HTTP header. The value of each entry is a list of strings. The actual HTTP header value will be chosen randomly from the list for each connection. Default value is the values in the example above.

In a connection, all keys in the specified map will be set to the HTTP header.