brook link - Advanced usage of brook

2022-10-28

This article introduces the brook link

https://txthinking.github.io/brook/protocol/brook-link-protocol.html

We know that brook supports the creation of brook server, brook wsserver, brook wssserver, brook socks5, and new types that may be supported in the future.

Under normal circumstances, only two concepts need to be entered when using the client, Server and Password, such as

brook server

1.2.3.4:9999
password

brook wsserver

ws://1.2.3.4:9999
password

brook wssserver

wss://domain.com:443
password

brook socks5 needs to enter one concept or three concepts, which is determined by the socks5 protocol standard

1.2.3.4:1080

or

1.2.3.4:1080
username
password

Why try to keep two concepts

The starting point of this design is that for ordinary users, the login operations on the internet, two concepts, username or equivalent, and password.

At the beginning, there was only brook server, and its server is similar to 1.2.3.4:9999, which looked neat and clean. Later, wsserver and wssserver were added, and the design concept was retained, and its surface protocol was placed on the Server, similar to ws://1.2.3.4:9999, wss://domain.com:443.

Advanced usage brook link

For students who like to study, you may know that brook server, brook wsserver, and brook wssserver all have advanced usage, which may not be used by most users. These advanced usages are supported by brook link.

e.g. brook server

--udpovertcp can specify UDP over TCP
--name The name displayed by the graphics client

Example

brook link -s 1.2.3.4:9999 -p hello --name MyName

e.g. brook wsserver

--address can specify IP, for example, some students use to specify the IP of cloudfare
--name The name displayed by the graphics client

Example

brook link -s ws://1.2.3.4:9999 -p hello --name MyName

e.g. brook wssserver

--address can specify IP, for example, some students use to specify the IP of cloudfare
--insecure allows the client to not verify the server's certificate
--withoutBrookProtocol can specify that the content is not encrypted using the brook protocol, of course, it needs the cooperation of the server side
--ca specifies the CA certificate, of course, requires the cooperation of the server side
--name The name displayed by the graphics client

Example

brook link -s wss://domain.com:443 -p hello --name MyName

For details, see the examples in the documentation

https://txthinking.github.io/brook/

Also available via brook link --help

Making good use of brook --help and brook xxx --help will actually save you time. For example, even as an author, I can't remember so many parameters, so every time I enter a command or subcommand, a --help will let me know what to type.

Get the brook link for socks5

brook link -s socks5://1.2.3.4:1080

or socks5 that requires authentication

brook link -s socks5://1.2.3.4:1080 --username hello --password hello

What accepts brook link as input

Because there are special symbols, pay attention to the need to enclose in quotation marks

brook tproxy --link "brook://..."
brook connect --link "brook://..."
brook testbrook --link "brook://..."
tun2brook --link "brook://..."
Brook GUI Client

Will it be troublesome to generate brook link first and then enter other commands?

In fact, the shell has a usage, the output of small quotes is directly used as part of the command, for example, we want to test a brook server

1.2.3.4:9999
password
brook testbrook `brook link -s 1.2.3.4:9999 -p password`

Discuss