Alat jaringan yang dapat diprogram lintas platform.
❤️ Shiliew - Aplikasi jaringan yang dirancang untuk mereka yang menghargai waktu mereka
bash <(curl https://bash.ooo/nami.sh)
nami install brook
brook server -l :9999 -p hello
Anda mungkin ingin menggunakan
brook link
untuk menyesuaikan beberapa parameter
Brook GUI akan meneruskan variabel global yang berbeda ke skrip pada waktu yang berbeda, dan skrip hanya perlu menetapkan hasil pemrosesan ke variabel global out
Sebelum membahas klien GUI, mari kita bahas dulu tentang klien baris perintah brook
. Seperti yang kita ketahui, setelah Anda menyebarkan server, Anda dapat menggunakan brook
klien baris perintah untuk membuat proksi kaus kaki5 lokal atau proksi http di mesin Anda, dan kemudian mengonfigurasinya di pengaturan proksi sistem Anda atau di browser Anda untuk menggunakan proksi ini. Namun:
Untuk spesifikasi sock5 dan http proxy anda bisa membaca artikel ini.
Klien GUI tidak menggunakan mode proksi kaus kaki5 dan http, jadi tidak ada masalah dengan beberapa perangkat lunak yang tidak menggunakan proksi sistem. Sebaliknya, ia menggunakan kartu jaringan virtual untuk mengambil alih seluruh jaringan sistem, termasuk http3 berbasis UDP. Selain itu, Brook memungkinkan kita untuk mengontrol permintaan jaringan secara terprogram, sehingga diperlukan pengetahuan dasar tentang permintaan jaringan.
Catatan: Ketika kita berbicara tentang alamat, yang kami maksud adalah alamat yang menyertakan nomor port, seperti alamat domain:
google.com:443
, atau alamat IP:8.8.8.8:53
google.com:443
8.8.8.8:53
, untuk menanyakan tentang IP google.com
google.com
, seperti 1.2.3.4
, ke aplikasi1.2.3.4:443
1.2.3.4:443
Dalam proses di atas, aplikasi sebenarnya membuat dua permintaan jaringan: satu ke alamat IP 8.8.8.8:53
dan satu lagi ke alamat IP 1.2.3.4:443
. Dengan kata lain, nama domain pada dasarnya adalah alias untuk IP, dan harus mendapatkan IP domain tersebut untuk membuat sambungan.
Brook memiliki fitur DNS Palsu, yang dapat mengurai nama domain dari permintaan kueri yang dikirimkan aplikasi ke DNS sistem dan memutuskan bagaimana merespons aplikasi tersebut.
google.com:443
8.8.8.8:53
, untuk menanyakan tentang IP google.com
8.8.8.8:53
. Ini akan memicu variabel in_dnsquery
, yang membawa informasi seperti domain
240.0.0.1
240.0.0.1:443
240.0.0.1:443
240.0.0.1:443
, menemukan bahwa ini adalah IP palsu, dan akan mengonversi alamat IP palsu kembali ke alamat domain google.com:443
. Ini akan memicu variabel in_address
, yang membawa informasi seperti domainaddress
google.com:443
ke Server Brookgoogle.com
, seperti menerima 1.2.3.4
1.2.3.4:443
1.2.3.4:443
dan mengembalikan data ke klien BrookNamun, jika situasi berikut terjadi, nama domain tidak akan/tidak dapat diurai, artinya klien Brook tidak akan/tidak dapat mengetahui nama domain tersebut dan akan memperlakukannya sebagai permintaan normal yang dikirim ke alamat IP:
Untuk menghindari tidak efektifnya DNS Palsu, silakan simak artikel ini.
google.com:443
8.8.8.8:53
, untuk menanyakan tentang IP google.com
8.8.8.8:53
. Ini akan memicu variabel in_address
, yang membawa informasi seperti ipaddress
8.8.8.8:53
ke Server Brook8.8.8.8:53
dan mengembalikan hasilnya, seperti 1.2.3.4
, ke klien Brook1.2.3.4:443
1.2.3.4:443
1.2.3.4:443
. Ini akan memicu variabel in_address
, yang membawa informasi seperti ipaddress
1.2.3.4:443
ke Server Brook1.2.3.4:443
dan mengembalikan data ke klien Brookgoogle.com:443
8.8.8.8:443
, untuk menanyakan tentang IP google.com
8.8.8.8:443
. Ini akan memicu variabel in_address
, yang membawa informasi seperti ipaddress
8.8.8.8:443
ke Server Brook8.8.8.8:443
, dan mengembalikan hasilnya, seperti 1.2.3.4
, ke klien Brook1.2.3.4:443
1.2.3.4:443
1.2.3.4:443
. Ini akan memicu variabel in_address
, yang membawa informasi seperti ipaddress
1.2.3.4:443
ke Server Brook1.2.3.4:443
dan mengembalikan data ke klien BrookUntuk menghindari tidak efektifnya DNS Palsu, silakan simak artikel ini.
in_brooklinks
dipicu:in_dnsquery
terpicu, Anda dapat memproses sesuai kebutuhan, seperti:in_address
terpicu, Anda dapat memproses sesuai kebutuhan, seperti:in_httprequest
dan in_httpresponse
.in_httprequest
terpicu, Anda dapat memproses sesuai kebutuhan, seperti:in_httpresponse
terpicu, Anda dapat memproses sesuai kebutuhan, seperti:Untuk informasi detail mengenai properti dan respon variabel, silakan merujuk ke konten berikut.
variabel | jenis | kondisi | waktu | keterangan | tipe keluar |
---|---|---|---|---|---|
di_brooklinks | peta | / | Sebelum menghubungkan | Tentukan terlebih dahulu beberapa link brook, lalu tentukan secara terprogram link mana yang akan disambungkan | peta |
di_dnsquery | peta | DNS Palsu: Aktif | Ketika permintaan DNS terjadi | Script dapat memutuskan bagaimana menangani permintaan ini | peta |
di_alamat | peta | / | Saat menghubungkan ke suatu alamat | skrip dapat memutuskan bagaimana menghubungkan | peta |
di_httprequest | peta | / | Saat permintaan HTTP(S) masuk | skrip dapat memutuskan bagaimana menangani permintaan ini | peta |
di_httppermintaan,di_httpresponse | peta | / | ketika respons HTTP(S) masuk | skrip dapat memutuskan bagaimana menangani respons ini | peta |
Kunci | Jenis | Keterangan | Contoh |
---|---|---|---|
_ | bodoh | tak berarti | BENAR |
out
, diabaikan jika bukan bertipe map
Kunci | Jenis | Keterangan | Contoh |
---|---|---|---|
... | ... | ... | ... |
nama khusus | rangkaian | tautan sungai | anak sungai://... |
... | ... | ... | ... |
Kunci | Jenis | Keterangan | Contoh |
---|---|---|---|
domain | rangkaian | nama domain | google.com |
jenis | rangkaian | jenis kueri | A |
aplikasi | rangkaian | ID atau jalur aplikasi | com.google.Chrome.helper |
antarmuka | rangkaian | antarmuka jaringan. Hanya Mac saja | en0 |
out
, jika jenis error
akan dicatat dalam log. Diabaikan jika bukan tipe map
Kunci | Jenis | Keterangan | Contoh |
---|---|---|---|
memblokir | bodoh | Apakah Blokir, defaultnya false | PALSU |
aku p | rangkaian | Tentukan IP secara langsung, hanya valid jika type A / AAAA | 1.2.3.4 |
sistem | bodoh | Selesaikan dengan DNS Sistem, default false | PALSU |
memotong | bodoh | Selesaikan dengan Bypass DNS, default false | PALSU |
kunci sungai | rangkaian | Ketika perlu menghubungkan Server, sebagai gantinya, sambungkan ke Server yang ditentukan dengan kunci in_brooklinks | nama khusus |
Kunci | Jenis | Keterangan | Contoh |
---|---|---|---|
jaringan | rangkaian | Jenis jaringan, nilainya tcp / udp | tcp |
alamat ipad | rangkaian | alamat jenis IP. Yang ada hanya alamat ip dan alamat domain. Perhatikan bahwa tidak ada hubungan antara keduanya | 1.2.3.4:443 |
alamat domain | rangkaian | Alamat jenis domain, karena FakeDNS kita bisa mendapatkan alamat nama domain di sini | google.com:443 |
aplikasi | rangkaian | ID atau jalur aplikasi | com.google.Chrome.helper |
antarmuka | rangkaian | antarmuka jaringan. Hanya Mac saja | en0 |
out
, jika jenis error
akan dicatat dalam log. Diabaikan jika bukan tipe map
Kunci | Jenis | Keterangan | Contoh |
---|---|---|---|
memblokir | bodoh | Apakah Blokir, defaultnya false | PALSU |
alamat ipad | rangkaian | Alamat jenis IP, tulis ulang tujuan | 1.2.3.4:443 |
alamat ipdaribypassdns | rangkaian | Gunakan Bypass DNS untuk mendapatkan IP A atau AAAA dan tulis ulang tujuannya, hanya valid jika domainaddress ada, nilainya A / AAAA | A |
memotong | bodoh | Lewati, default false . Jika true dan domainaddress , maka ipaddress atau ipaddressfrombypassdns harus ditentukan | PALSU |
mitra | bodoh | Apakah akan melakukan MITM, default false . Hanya valid jika network tcp . Perlu menginstal CA, lihat di bawah | PALSU |
mitmprotocol | rangkaian | Protokol MITM perlu ditentukan secara eksplisit, nilainya http / https | https |
mitmcertdomain | rangkaian | Nama domain sertifikat MITM, yang diambil dari domainaddress secara default. Jika ipaddress dan mitm true dan mitmprotocol adalah https maka harus ditentukan secara eksplisit | contoh.com |
mitmwithbody | bodoh | Apakah akan memanipulasi badan http, default false . akan membaca isi permintaan dan respons ke dalam memori dan berinteraksi dengan skrip. Batas total memori iOS 50 juta dapat mematikan proses | PALSU |
mitmautohandlecompress | bodoh | Apakah akan mendekompresi badan http secara otomatis saat berinteraksi dengan skrip, defaultnya false | PALSU |
mitmclienttimeout | ke dalam | Batas waktu untuk bicara MITM ke server, kedua, default 0 | 0 |
mitmserverreadtimeout | ke dalam | Batas waktu untuk pembacaan MITM dari klien, kedua, default 0 | 0 |
mitmserverwritetimeout | ke dalam | Batas waktu untuk penulisan MITM ke klien, kedua, default 0 | 0 |
kunci sungai | rangkaian | Ketika perlu menghubungkan Server, sebagai gantinya, sambungkan ke Server yang ditentukan dengan kunci in_brooklinks | nama khusus |
Kunci | Jenis | Keterangan | Contoh |
---|---|---|---|
URL | rangkaian | URL | https://example.com/hello |
Metode | rangkaian | metode HTTP | MENDAPATKAN |
Tubuh | byte | Badan permintaan HTTP | / |
... | rangkaian | bidang lainnya adalah header HTTP | / |
out
, harus disetel ke permintaan atau respons
Kunci | Jenis | Keterangan | Contoh |
---|---|---|---|
Kode Status | ke dalam | Kode status HTTP | 200 |
Tubuh | byte | Badan respons HTTP | / |
... | rangkaian | bidang lainnya adalah header HTTP | / |
out
, harus disetel ke respons
Di Brook GUI, skrip disarikan menjadi Modules . Sudah ada beberapa modul, dan tidak ada keajaiban, hanya otomatis menggabungkan _header.tengo dan _footer.tengo, jadi Anda hanya perlu menulis modul itu sendiri.
modules = append(modules, {
// If you want to predefine multiple brook links, and then programmatically specify which one to connect to, then define `brooklinks` key a function
brooklinks: func(m) {
// Please refer to the example in `brooklinks.tengo`
},
// If you want to intercept and handle a DNS query, then define `dnsquery` key a function, `m` is the `in_dnsquery`
dnsquery: func(m) {
// Please refer to the example in `block_aaaa.tengo`
},
// If you want to intercept and handle an address, then define `address` key a function, `m` is the `in_address`
address: func(m) {
// Please refer to the example in `block_google_secure_dns.tengo`
},
// If you want to intercept and handle a http request, then define `httprequest` key a function, `request` is the `in_httprequest`
httprequest: func(request) {
// Please refer to the example in `ios_app_downgrade.tengo` or `redirect_google_cn.tengo`
},
// If you want to intercept and handle a http response, then define `httpresponse` key a function, `request` is the `in_httprequest`, `response` is the `in_httpresponse`
httpresponse: func(request, response) {
// Please refer to the example in `response_sample.tengo`
}
})
https://github.com/txthinking/tun2brook
Jika Anda menggunakan tun2brook, Anda dapat menggabungkan beberapa modul secara manual menjadi satu skrip lengkap dengan cara berikut. Misalnya:
cat _header.tengo > my.tengo
cat block_google_secure_dns.tengo >> my.tengo
cat block_aaaa.tengo >> my.tengo
cat _footer.tengo >> my.tengo
Sintaks Bahasa Tengo
Perpustakaan
teks: ekspresi reguler, konversi string, dan manipulasi
matematika: konstanta dan fungsi matematika
kali: fungsi yang berhubungan dengan waktu
rand: fungsi acak
fmt: fungsi pemformatan
json: fungsi JSON
enum: Fungsi enumerasi
hex: fungsi pengkodean dan penguraian hex
base64: fungsi pengkodean dan decoding base64
brook
: modul sungai
Constants
* os: string, linux/darwin/windows/ios/android
Functions
* splithostport(address string) => map/error: splits a network address of the form "host:port" to { "host": "xxx", "port": "xxx" }
* country(ip string) => string/error: get country code from ip
* cidrcontainsip(cidr string, ip string) => bool/error: reports whether the network includes ip
* parseurl(url string) => map/error: parses a raw url into a map, keys: scheme/host/path/rawpath/rawquery
* parsequery(query string) => map/error: parses a raw query into a kv map
* map2query(kv map) => string/error: convert map{string:string} into a query string
* bytes2ints(b bytes) => array/error: convert bytes into [int]
* ints2bytes(ints array) => bytes/error: convert [int] into bytes
* bytescompare(a bytes, b bytes) => int/error: returns an integer comparing two bytes lexicographically. The result will be 0 if a == b, -1 if a < b, and +1 if a > b
* bytescontains(b bytes, sub bytes) => bool/error: reports whether sub is within b
* byteshasprefix(s bytes, prefix bytes) => bool/error: tests whether the bytes s begins with prefix
* byteshassuffix(s bytes, suffix bytes) => bool/error: tests whether the bytes s ends with suffix
* bytesindex(s bytes, sep bytes) => int/error: returns the index of the first instance of sep in s, or -1 if sep is not present in s
* byteslastindex(s bytes, sep bytes) => int/error: returns the index of the last instance of sep in s, or -1 if sep is not present in s
* bytesreplace(s bytes, old bytes, new bytes, n int) => bytes/error: returns a copy of the s with the first n non-overlapping instances of old replaced by new. If n < 0, there is no limit on the number of replacements
* pathescape(s string) => string/error: escapes the string so it can be safely placed inside a URL path segment, replacing special characters (including /) with %XX sequences as needed
* pathunescape(s string) => string/error: does the inverse transformation of pathescape
* queryescape(s string) => string/error: escapes the string so it can be safely placed inside a URL query
* queryunescape(s string) => string/error: does the inverse transformation of queryescape
* hexdecode(s string) => bytes/error: returns the bytes represented by the hexadecimal string s
* hexencode(s string) => string/error: returns the hexadecimal encoding of src
Jika Anda menulis skrip yang rumit, GUI mungkin tidak nyaman untuk melakukan debug. Disarankan untuk menggunakan tun2brook di desktop untuk melakukan debug dengan fmt.println
https://txthinking.github.io/ca/ca.pem
sistem operasi | Bagaimana |
---|---|
iOS | https://www.youtube.com/watch?v=HSGPC2vpDGk |
Android | Android memiliki pengguna CA dan sistem CA, harus diinstal di sistem CA setelah ROOT |
macOS | nami install mad ca.txthinking , sudo mad install --ca ~/.nami/bin/ca.pem |
jendela | nami install mad ca.txthinking , Admin: mad install --ca ~/.nami/bin/ca.pem |
Beberapa perangkat lunak mungkin tidak membaca sistem CA, Anda dapat menggunakan
curl --cacert ~/.nami/bin/ca.pem
untuk melakukan debug
Brook OpenWRT: Sangat mendukung IPv4/IPv6/TCP/UDP
Pendirian Brook terhadap IPv6 adalah positif, jika server atau lingkungan lokal Anda tidak memiliki tumpukan IPv6, baca artikel ini.
brook link --address
, maka klien Brook akan mencoba menyelesaikan IP domain menggunakan DNS lokal, lebih memilih data AAAA. Misalnya:Connectivity Check
. Jika kadang-kadang berhasil tetapi tidak pada yang lain, ini menunjukkan ketidakstabilan.Test IPv4 TCP
untuk pengujian; pengujian ini telah melakukan hardcode pada alamat IP, sehingga tidak memicu resolusi DNS.Test IPv4 UDP
untuk pengujian; pengujian ini telah melakukan hardcode pada alamat IP, sehingga tidak memicu resolusi DNS.Test IPv6 TCP
untuk pengujian; pengujian ini telah melakukan hardcode pada alamat IP, sehingga tidak memicu resolusi DNS.Test IPv6 UDP
untuk pengujian; pengujian ini telah melakukan hardcode pada alamat IP, sehingga tidak memicu resolusi DNS.Echo Client
untuk pengujian. Jika server gema yang dimasukkan adalah alamat domain, maka akan memicu resolusi DNS.Block Google Secure DNS
sudah cukup. Untuk kasus lainnya, lihat artikel ini.Block Google Secure DNS
Bypass Geo
Bypass Apple
: Untuk mencegah masalah dalam menerima notifikasi pesan Apple.Bypass China domain
atau Bypass China domain A
: Yang pertama menggunakan Bypass DNS
untuk mendapatkan IP, lalu Bypass Geo
atau modul lain memutuskan apakah akan mem-bypass; yang terakhir melewati secara langsung setelah mendapatkan IP dengan Bypass DNS
menggunakan catatan A. Yang terakhir ini diperlukan jika lokal Anda tidak mendukung IPv6. Setiap subperintah memiliki parameter --example
yang dapat mencetak contoh penggunaan minimal
Brook - Alat jaringan yang dapat diprogram lintas platform
Anak sungai
brook --help
Penggunaan :
Brook [GLOBAL OPTIONS] command [COMMAND OPTIONS] [ARGUMENTS...]
--blockCIDR4List ="": Satu CIDR per baris, https://, http:// atau jalur absolut file lokal, seperti: https://raw.githubusercontent.com/txthinking/brook/master/programmable/list/example_cidr4 .txt. Bekerja dengan server/wsserver/wssserver/quicserver
--blockCIDR6List ="": Satu CIDR per baris, https://, http:// atau jalur absolut file lokal, seperti: https://raw.githubusercontent.com/txthinking/brook/master/programmable/list/example_cidr6 .txt. Bekerja dengan server/wsserver/wssserver/quicserver
--blockDomainList ="": Satu domain per baris, mode pencocokan sufiks. https://, http:// atau jalur absolut file lokal. Seperti: https://raw.githubusercontent.com/txthinking/brook/master/programmable/list/example_domain.txt. Bekerja dengan server/wsserver/wssserver/quicserver
--blockGeoIP ="": Blokir IP berdasarkan kode negara Geo, seperti AS. Bekerja dengan server/wsserver/wssserver/quicserver
--blockListUpdateInterval ="": Perbarui daftar --blockDomainList,--blockCIDR4List,--blockCIDR6List interval, kedua. default 0, hanya dibaca satu kali saat mulai (default: 0)
--clientHKDFInfo ="": info klien HKDF, sering kali Anda tidak perlu mengubahnya, jika diubah, semua dan setiap tautan sungai di sisi klien harus sama, maksud saya masing-masing (default: "brook")
--dialWithDNS ="": Jika nama domain perlu diselesaikan, gunakan DNS yang ditentukan. Seperti 8.8.8.8:53 atau https://dns.google/dns-query?address=8.8.8.8%3A443, alamat diperlukan. Perhatikan bahwa untuk perintah sisi klien, ini tidak memengaruhi klien yang meneruskan alamat domain ke server
--dialWithDNSPrefer ="": Ini digunakan dengan parameter dialWithDNS. Lebih suka rekaman A atau rekaman AAAA. Nilainya adalah A atau AAAA
--dialWithIP4 ="": Ketika mesin saat ini membuat koneksi jaringan ke IPv4 luar, baik TCP dan UDP, ini digunakan untuk menentukan IPv4 yang digunakan
--dialWithIP6 ="": Ketika mesin saat ini membuat koneksi jaringan ke IPv6 luar, baik TCP maupun UDP, ini digunakan untuk menentukan IPv6 yang digunakan
--dialWithNIC ="": Ketika mesin saat ini membuat koneksi jaringan ke luar, baik TCP maupun UDP, ini digunakan untuk menentukan NIC yang digunakan
--dialWithSocks5 ="": Ketika mesin saat ini membuat koneksi jaringan ke luar, baik TCP dan UDP, dengan proksi kaus kaki5 Anda, seperti 127.0.0.1:1081
--dialWithSocks5Password =": Jika ada
--dialWithSocks5TCPTimeout ="": waktu (default: 0)
--dialWithSocks5UDPTimeout ="": waktu (default: 60)
--dialWithSocks5Username ="": Jika ada
--ipLimitInterval ="": Interval untuk ipLimitMax (default: 0)
--ipLimitMax ="": Batasi jumlah alamat IP klien, berhati-hatilah saat menggunakan parameter ini, karena klien mungkin memiliki IP dinamis. Bekerja dengan server/wsserver/wssserver/quicserver (default: 0)
--ipLimitWait ="": Berapa lama menunggu pemulihan setelah melebihi ipLimitMax (default: 0)
--log ="": Aktifkan log. Nilai yang valid adalah jalur file atau 'konsol'. Kirim SIGUSR1 kepada saya untuk mereset file log pada sistem unix. Jika Anda ingin men-debug lib SOCKS5, setel env SOCKS5_DEBUG=true
--pid ="": Jalur file yang digunakan untuk menyimpan pid. Kirim SIGUSR1 kepada saya untuk mereset file --serverLog pada sistem unix
--pprof ="": buka http pprof dengarkan alamat, seperti :6060
--prometheus ="": prometheus http mendengarkan addr, seperti :7070. Jika ditransmisikan melalui jaringan publik, disarankan untuk menggunakannya dengan nico
--prometheusPath ="": jalur http prometheus, seperti /xxx. Jika ditransmisikan melalui jaringan publik, disarankan nilai yang sulit ditebak
--serverHKDFInfo ="": info server HKDF, sering kali Anda tidak perlu mengubahnya, jika diubah, semua dan setiap tautan sungai di sisi klien harus sama, maksud saya masing-masing (default: "sungai")
--serverLog ="": Mengaktifkan log server, lalu lintas, dan lainnya. Nilai yang valid adalah jalur file atau 'konsol'. Kirim SIGUSR1 kepada saya untuk mereset file log pada sistem unix. Saling eksklusif dengan parameter --log. Bekerja dengan server/wsserver/wssserver/quicserver dengan protokol brook
--speedLimit ="": Batas kecepatan (b), 500kb/s seperti: 500000, berfungsi dengan server/wsserver/wssserver/quicserver (default: 0)
--tag ="": Tag dapat digunakan untuk proses, akan ditambahkan ke log atau serverLog, seperti: 'key1:value1'. Semua tag juga akan ditambahkan sebagai parameter kueri satu per satu ke userAPI
--userAPI ="": Saat Anda membangun sistem pengguna Anda sendiri, Brook Server akan mengirimkan permintaan GET ke userAPI Anda untuk memeriksa apakah token valid, misalnya: https://api-server.com/a_unpredictable_path. Ya, disarankan untuk menambahkan jalur yang tidak dapat diprediksi ke API https Anda, tentu saja Anda juga dapat menggunakan api http untuk komunikasi jaringan internal. Format permintaannya adalah https://api-server.com/a_unpredictable_path?token=xxx. Jika responsnya adalah 200, isi harus berupa pengidentifikasi unik pengguna, seperti ID pengguna; semua kode status lainnya dianggap mewakili pengguna tidak sah, dan dalam kasus ini, isi harus berupa string yang menjelaskan kesalahan. Ini harus digunakan dengan --serverLog dan server/wsserver/wssserver/quicserver dengan protokol brook. Untuk informasi lebih lanjut, silakan baca https://github.com/txthinking/brook/blob/master/protocol/user.md
--userAPIInvalidCacheTime ="": Setelah token diperiksa dan tidak valid, userAPI tidak akan diminta untuk memvalidasi lagi untuk jangka waktu tertentu. Nilai yang masuk akal harus ditetapkan, jika tidak maka akan mempengaruhi kinerja setiap koneksi masuk. Perhatikan bahwa ini mungkin mempengaruhi pengalaman pengguna, ketika Anda mengubah status pengguna dari tidak valid menjadi valid di sistem pengguna Anda (default: 1800)
--userAPIValidCacheTime ="": Setelah token diperiksa dan valid, userAPI tidak akan diminta untuk memvalidasi lagi untuk jangka waktu tertentu. Nilai yang masuk akal harus ditetapkan, jika tidak maka akan mempengaruhi kinerja setiap koneksi masuk (default: 3600)
--version, -v : mencetak versinya
Mulai server brook yang mendukung tcp dan udp
--blockCIDR4List ="": Opsi ini akan dihapus di versi mendatang, silakan gunakan opsi global sebagai gantinya
--blockCIDR6List ="": Opsi ini akan dihapus di versi mendatang, silakan gunakan opsi global sebagai gantinya
--blockDomainList ="": Opsi ini akan dihapus di versi mendatang, silakan gunakan opsi global sebagai gantinya
--blockGeoIP ="": Opsi ini akan dihapus di versi mendatang, silakan gunakan opsi global sebagai gantinya
--example : Menampilkan contoh penggunaan minimal
--listen, -l ="": Dengarkan alamat, seperti: ':9999'
--kata sandi, -p ="": Kata sandi server
--tcpTimeout ="": waktu (default: 0)
--udpTimeout ="": waktu (default: 0)
--updateListInterval ="": Opsi ini akan dihapus di versi mendatang, silakan gunakan opsi global (default: 0)
Mulai klien brook yang mendukung tcp dan udp. Itu dapat membuka proxy kaus kaki5, [src <-> kaus kaki5 <-> $klien brook <-> $server brook <-> dst]
--example : Menampilkan contoh penggunaan minimal
--http ="": Tempat mendengarkan koneksi proxy HTTP
--link ="": brook link, Anda bisa mendapatkannya melalui $ brook link. Parameter wssserver dan kata sandi akan diabaikan
--kata sandi, -p ="": Kata sandi server Brook
--server, -s ="": Alamat server Brook, seperti: 1.2.3.4:9999
--socks5 ="": Tempat mendengarkan koneksi SOCKS5 (default: 127.0.0.1:1080)
--socks5ServerIP ="": Hanya jika IP server kaus kaki5 Anda berbeda dengan IP mendengarkan
--tcpTimeout ="": waktu (default: 0)
--udpTimeout ="": waktu (default: 0)
Mulai brook wsserver yang mendukung tcp dan udp. Ini membuka server http standar dan server websocket
--blockCIDR4List ="": Opsi ini akan dihapus di versi mendatang, silakan gunakan opsi global sebagai gantinya
--blockCIDR6List ="": Opsi ini akan dihapus di versi mendatang, silakan gunakan opsi global sebagai gantinya
--blockDomainList ="": Opsi ini akan dihapus di versi mendatang, silakan gunakan opsi global sebagai gantinya
--blockGeoIP ="": Opsi ini akan dihapus di versi mendatang, silakan gunakan opsi global sebagai gantinya
--example : Menampilkan contoh penggunaan minimal
--listen, -l ="": Dengarkan alamat, seperti: ':80'
--kata sandi, -p ="": Kata sandi server
--path ="": Jalur URL (default: /ws)
--tcpTimeout ="": waktu (default: 0)
--udpTimeout ="": waktu (default: 0)
--updateListInterval ="": Opsi ini akan dihapus di versi mendatang, silakan gunakan opsi global (default: 0)
--withoutBrookProtocol : Data tidak akan dienkripsi dengan protokol brook
--xForwardedFor : Ganti kolom from di --log, perhatikan bahwa ini mungkin palsu
Mulai brook wsclient yang mendukung tcp dan udp. Itu dapat membuka proxy kaus kaki5, [src <-> kaus kaki5 <-> $ brook wsclient <-> $ brook wsserver <-> dst]
--example : Menampilkan contoh penggunaan minimal
--http ="": Tempat mendengarkan koneksi proxy HTTP
--link ="": brook link, Anda bisa mendapatkannya melalui $ brook link. Parameter wssserver dan kata sandi akan diabaikan
--kata sandi, -p ="": Kata sandi server Brook
--socks5 ="": Tempat mendengarkan koneksi SOCKS5 (default: 127.0.0.1:1080)
--socks5ServerIP ="": Hanya jika IP server kaus kaki5 Anda berbeda dengan IP mendengarkan
--tcpTimeout ="": waktu (default: 0)
--udpTimeout ="": waktu (default: 0)
--wsserver, -s ="": Alamat server ws sungai, seperti: ws://1.2.3.4:80, jika tidak ada jalur maka /ws akan digunakan. Jangan hilangkan port dalam kondisi apa pun
Mulai brook wssserver yang mendukung tcp dan udp. Ini membuka server https standar dan server websocket
--blockCIDR4List ="": Opsi ini akan dihapus di versi mendatang, silakan gunakan opsi global sebagai gantinya
--blockCIDR6List ="": Opsi ini akan dihapus di versi mendatang, silakan gunakan opsi global sebagai gantinya
--blockDomainList ="": Opsi ini akan dihapus di versi mendatang, silakan gunakan opsi global sebagai gantinya
--blockGeoIP ="": Opsi ini akan dihapus di versi mendatang, silakan gunakan opsi global sebagai gantinya
--cert ="": Jalur absolut file sertifikat untuk domain, seperti /path/to/cert.pem. Jika cert atau certkey kosong, sertifikat akan diterbitkan secara otomatis
--certkey ="": Jalur absolut file kunci sertifikat untuk domain, seperti /path/to/certkey.pem. Jika cert atau certkey kosong, sertifikat akan diterbitkan secara otomatis
--domainaddress ="": Seperti: domain.com:443. Jika Anda memilih untuk menerbitkan sertifikat secara otomatis, domain harus telah diselesaikan ke IP server dan port 80 juga akan digunakan
--example : Menampilkan contoh penggunaan minimal
--kata sandi, -p ="": Kata sandi server
--path ="": Jalur URL (default: /ws)
--tcpTimeout ="": waktu (default: 0)
--udpTimeout ="": waktu (default: 0)
--updateListInterval ="": Opsi ini akan dihapus di versi mendatang, silakan gunakan opsi global (default: 0)
--withoutBrookProtocol : Data tidak akan dienkripsi dengan protokol brook
Mulai brook wssclient yang mendukung tcp dan udp. Itu dapat membuka proxy kaus kaki5, [src <-> kaus kaki5 <-> $ brook wssclient <-> $ brook wssserver <-> dst]
--example : Menampilkan contoh penggunaan minimal
--http ="": Tempat mendengarkan koneksi proxy HTTP
--link ="": brook link, Anda bisa mendapatkannya melalui $ brook link. Parameter wssserver dan kata sandi akan diabaikan
--kata sandi, -p ="": Kata sandi server wss Brook
--socks5 ="": Tempat mendengarkan koneksi SOCKS5 (default: 127.0.0.1:1080)
--socks5ServerIP ="": Hanya jika IP server kaus kaki5 Anda berbeda dengan IP mendengarkan
--tcpTimeout ="": waktu (default: 0)
--udpTimeout ="": waktu (default: 0)
--wssserver, -s ="": Alamat server wss Brook, seperti: wss://google.com:443, jika tidak ada jalur maka /ws akan digunakan. Jangan hilangkan port dalam kondisi apa pun
Mulai brook quickserver yang mendukung tcp dan udp.
--blockCIDR4List ="": Opsi ini akan dihapus di versi mendatang, silakan gunakan opsi global sebagai gantinya
--blockCIDR6List ="": Opsi ini akan dihapus di versi mendatang, silakan gunakan opsi global sebagai gantinya
--blockDomainList ="": Opsi ini akan dihapus di versi mendatang, silakan gunakan opsi global sebagai gantinya
--blockGeoIP ="": Opsi ini akan dihapus di versi mendatang, silakan gunakan opsi global sebagai gantinya
--cert ="": Jalur absolut file sertifikat untuk domain, seperti /path/to/cert.pem. Jika cert atau certkey kosong, sertifikat akan diterbitkan secara otomatis
--certkey ="": Jalur absolut file kunci sertifikat untuk domain, seperti /path/to/certkey.pem. Jika cert atau certkey kosong, sertifikat akan diterbitkan secara otomatis
--domainaddress ="": Seperti: domain.com:443. Jika Anda memilih untuk menerbitkan sertifikat secara otomatis, domain harus telah diselesaikan ke IP server dan port 80 juga akan digunakan
--example : Menampilkan contoh penggunaan minimal
--kata sandi, -p ="": Kata sandi server
--tcpTimeout ="": waktu (default: 0)
--udpTimeout ="": waktu (default: 0)
--updateListInterval ="": Opsi ini akan dihapus di versi mendatang, silakan gunakan opsi global (default: 0)
--withoutBrookProtocol : Data tidak akan dienkripsi dengan protokol brook
Mulai brook quicclient yang mendukung tcp dan udp. Itu dapat membuka proxy kaus kaki5, [src <-> kaus kaki5 <-> $ brook quicclient <-> $ brook quicserver <-> dst]. (Parameter panggilan global diabaikan)
--example : Menampilkan contoh penggunaan minimal
--http ="": Tempat mendengarkan koneksi proxy HTTP
--link ="": brook link, Anda bisa mendapatkannya melalui $ brook link. Parameter wssserver dan kata sandi akan diabaikan
--socks5 ="": Tempat mendengarkan koneksi SOCKS5 (default: 127.0.0.1:1080)
--socks5ServerIP ="": Hanya jika IP server kaus kaki5 Anda berbeda dengan IP mendengarkan
--tcpTimeout ="": waktu (default: 0)
--udpTimeout ="": waktu (default: 0)
Menyampaikan lalu lintas jaringan melalui brook, yang mendukung TCP dan UDP. Mengakses [dari alamat] sama dengan mengakses [ke alamat], [src <-> dari alamat <-> $ brook server/wsserver/wssserver/quicserver <-> ke alamat]
--example : Menampilkan contoh penggunaan minimal
--from, -f, -l ="": Dengarkan alamat: seperti ':9999'
--link ="": brook link, Anda bisa mendapatkannya melalui $ brook link. Parameter server dan kata sandi akan diabaikan
--kata sandi, -p ="": Kata sandi
--server, -s ="": brook server atau brook wsserver atau brook wssserver atau brook quickserver, seperti: 1.2.3.4:9999, ws://1.2.3.4:9999, wss://domain:443/ws, cepat://domain.com:443
--tcpTimeout ="": waktu (default: 0)
--to, -t ="": Alamat yang dituju, seperti: 1.2.3.4:9999
--udpTimeout ="": waktu (default: 0)
Jalankan server dns melalui brook, yang mendukung TCP dan UDP, [src <-> $ brook dnserversoverbrook <-> $ brook server/wsserver/wssserver/quicserver <-> dns] atau [src <-> $ brook dnsserveroverbrook <-> dnsForBypass]
--blockDomainList ="": Satu domain per baris, mode pencocokan sufiks. https://, http:// atau jalur file absolut lokal. Seperti: https://raw.githubusercontent.com/txthinking/brook/master/programmable/list/example_domain.txt
--bypassDomainList ="": Satu domain per baris, mode pencocokan sufiks. https://, http:// atau jalur file absolut lokal. Seperti: https://raw.githubusercontent.com/txthinking/brook/master/programmable/list/example_domain.txt
--disableA : Nonaktifkan kueri
--disableAAAA : Nonaktifkan kueri AAAA
--dns ="": Server DNS untuk menyelesaikan domain TIDAK ada dalam daftar (default: 8.8.8.8:53)
--DNSFORBYPASS = "": DNS Server untuk menyelesaikan domain dalam daftar bypass. Seperti 223.5.5.5:53 atau https://dns.alidns.com/dns-query?address=222.5.5.5:443, alamatnya diperlukan (default: 223.5.5.5:53)
--Example : Tampilkan contoh penggunaan minimal
--Link = "": Tautan Brook, Anda bisa mendapatkannya melalui $ tautan Brook. Parameter server dan kata sandi akan diabaikan
-listen, -l = "": Dengarkan alamat, seperti: 127.0.0.1:53
--password, -p = "": kata sandi
--sver, -s = "": Brook Server atau Brook WSServer atau Brook WSSServer atau Brook Quicserver, seperti: 1.2.3.4:9999, WS: //1.2.3.4: 9999, WSS: //domain.com: 443/ WS, quic: //domain.com: 443
--TCPTIMEOUT = "": waktu (s) (default: 0)
--udptimeout = "": waktu (s) (default: 0)
Menghasilkan tautan brook
--Address = "": Saat server adalah Brook WSServer atau Brook WSSServer atau Brook Quicserver, tentukan alamat alih-alih menyelesaikan alamat dari host, seperti 1.2.3.4:443
--Ca = "": Saat server adalah Brook WSSServer atau Brook Quicserver, tentukan CA untuk sertifikat yang tidak dipercaya, seperti /path/to/ca.pem
--ClientHkDfinfo = "": Info HKDF Klien, sebagian besar waktu Anda tidak perlu mengubah ini, baca protokol brook jika Anda tidak tahu apa ini
--Example : Tampilkan contoh penggunaan minimal
---fragment = "": Ketika server adalah Brook WSSServer, membagi ClientHello menjadi beberapa fragmen dan kemudian mengirimnya satu per satu dengan penundaan (milidetik). Formatnya adalah min_length: max_length: min_delay: max_delay, tidak bisa nol, seperti 50: 100: 10: 50
--Incure : Saat server adalah Brook WSSServer atau Brook Quicserver, klien tidak memverifikasi rantai sertifikat server dan nama host
--name = "": Berikan server ini nama
--password, -p = "": kata sandi
--sver, -s = "": Dukungan Brook Server, Brook WSServer, Brook WSSServer, Socks5 Server, Brook Quicserver. Seperti: 1.2.3.4:9999, WS: //1.2.3.4: 9999, WSS: //Google.com: 443/WS, Socks5: //1.2.3.4: 1080, quic: //google.com: 443
--serverhkdfinfo = "": info server hkdf, sebagian besar waktu Anda tidak perlu mengubahnya, baca protokol brook jika Anda tidak tahu apa ini
--tlsfingerprint = "": Saat server adalah Brook WSSServer, pilih TLS Sidik Jari, Nilai Bisa: Chrome
--Token = "": Token mewakili identitas pengguna. Sebuah string yang dikodekan dalam heksadesimal. Server perlu diaktifkan --USERAPI diaktifkan. Perhatikan bahwa: hanya didukung oleh Brook GUI (kecuali untuk OpenWrt) dan Tun2Brook
--udpoverstream : Saat server adalah Brook Quicserver, UDP Over Stream. Dalam keadaan normal, Anda memerlukan parameter ini karena ukuran datagram maks untuk quic sangat kecil. Catatan: Hanya Brook Cli dan Tun2brook Support untuk saat ini
--udpovertcp : Saat server adalah Brook Server, UDP melalui TCP
--Susername, -u = "": nama pengguna, saat server adalah server socks5
--denganbrookprotocol : Saat server adalah Brook Wsserver atau Brook WSSServer atau Brook Quicserver, data tidak akan dienkripsi dengan Brook Protocol
Jalankan klien dan sambungkan dengan tautan Brook, yang mendukung TCP dan UDP. Ini dapat memulai proxy socks5, [src <-> socks5 <-> $ brook connect <-> $ brook server/wsserver/wssserver/quicserver <-> dst]
--Example : Tampilkan contoh penggunaan minimal
--http = "": tempat mendengarkan koneksi proxy http
- -link, -l = "": tautan Brook, Anda bisa mendapatkannya melalui $ tautan Brook
--socks5 = "": tempat mendengarkan koneksi socks5 (default: 127.0.0.1:1080)
--socks5serverip = "": Hanya jika IP server Socks5 Anda berbeda dari Listen IP
--TCPTIMEOUT = "": waktu (s) (default: 0)