เครื่องมือเครือข่ายที่ตั้งโปรแกรมได้ข้ามแพลตฟอร์ม
❤️ Shiliew - แอปเครือข่ายที่ออกแบบมาสำหรับผู้ที่ให้ความสำคัญกับเวลา
bash <(curl https://bash.ooo/nami.sh)
nami install brook
brook server -l :9999 -p hello
คุณอาจต้องการใช้
brook link
เพื่อปรับแต่งพารามิเตอร์บางอย่าง
Brook GUI จะส่งผ่าน ตัวแปรโกลบอล ที่แตกต่างกันไปยังสคริปต์ในเวลาที่ต่างกัน และสคริปต์จะต้องกำหนดผลการประมวลผลให้กับตัวแปร out
เท่านั้น
ก่อนที่จะหารือเกี่ยวกับไคลเอ็นต์ GUI เรามาพูดถึงไคลเอ็นต์บรรทัดคำสั่งก่อน brook
ดังที่เราทราบ หลังจากที่คุณปรับใช้เซิร์ฟเวอร์แล้ว คุณสามารถใช้ลำธาร brook
บรรทัดคำสั่งเพื่อสร้างพร็อกซีถุงเท้าในเครื่องหรือพร็อกซี http บนเครื่องของคุณ จากนั้นกำหนดค่าในการตั้งค่าพร็อกซีของระบบหรือในเบราว์เซอร์ของคุณเพื่อใช้พร็อกซีนี้ อย่างไรก็ตาม:
สำหรับข้อมูลเฉพาะของพร็อกซีocks5 และ http คุณสามารถอ่านบทความนี้ได้
ไคลเอ็นต์ GUI ไม่ได้ใช้โหมดพร็อกซีocks5 และ http ดังนั้นจึงไม่มีปัญหากับซอฟต์แวร์บางตัวที่ไม่ได้ใช้พร็อกซีของระบบ แต่จะใช้การ์ดเครือข่ายเสมือนเพื่อเข้าควบคุมเครือข่ายของระบบทั้งหมดแทน รวมถึง http3 ที่ใช้ UDP นอกจากนี้ Brook ยังช่วยให้เราควบคุมคำขอเครือข่ายโดยทางโปรแกรมได้ ดังนั้นจึงจำเป็นต้องมีความรู้พื้นฐานเกี่ยวกับคำขอเครือข่าย
หมายเหตุ: เมื่อเราพูดถึงที่อยู่ เราหมายถึงที่อยู่ที่มีหมายเลขพอร์ต เช่น ที่อยู่โดเมน:
google.com:443
หรือที่อยู่ IP:8.8.8.8:53
google.com:443
8.8.8.8:53
เพื่อสอบถามเกี่ยวกับ IP ของ google.com
google.com
เช่น 1.2.3.4
ไปยังแอป1.2.3.4:443
1.2.3.4:443
ในกระบวนการข้างต้น แอปจะส่งคำขอเครือข่ายสองรายการ: รายการหนึ่งไปยังที่อยู่ IP 8.8.8.8:53
และอีกรายการหนึ่งไปยังที่อยู่ IP 1.2.3.4:443
กล่าวอีกนัยหนึ่ง ชื่อโดเมนโดยพื้นฐานแล้วเป็นนามแฝงสำหรับ IP และจะต้องได้รับ IP ของโดเมนเพื่อสร้างการเชื่อมต่อ
Brook มีฟีเจอร์ DNS ปลอม ซึ่งสามารถแยกชื่อโดเมนออกจากคำขอค้นหาที่แอปส่งไปยัง DNS ของระบบ และตัดสินใจว่าจะตอบสนองต่อแอปอย่างไร
google.com:443
8.8.8.8:53
เพื่อสอบถามเกี่ยวกับ IP ของ google.com
8.8.8.8:53
สิ่งนี้จะทริกเกอร์ตัวแปร in_dnsquery
ซึ่งส่งข้อมูลเช่น domain
240.0.0.1
240.0.0.1:443
240.0.0.1:443
240.0.0.1:443
และพบว่านี่เป็น IP ปลอม และจะแปลงที่อยู่ IP ปลอมกลับไปเป็นที่อยู่โดเมน google.com:443
สิ่งนี้จะทริกเกอร์ตัวแปร in_address
ซึ่งมีข้อมูลเช่นที่ domainaddress
google.com:443
ไปยังเซิร์ฟเวอร์ Brookgoogle.com
เช่นการรับ 1.2.3.4
1.2.3.4:443
1.2.3.4:443
และส่งคืนข้อมูลไปยังไคลเอนต์ Brookอย่างไรก็ตาม หากเกิดสถานการณ์ต่อไปนี้ ชื่อโดเมนจะไม่สามารถ/ไม่สามารถแยกวิเคราะห์ได้ ซึ่งหมายความว่าไคลเอนต์ Brook จะไม่/ไม่สามารถรู้ว่าชื่อโดเมนคืออะไร และจะถือว่าเป็นคำขอปกติที่ส่งไปยังที่อยู่ IP:
เพื่อหลีกเลี่ยงความไม่มีประสิทธิภาพของ Fake DNS โปรดอ่านบทความนี้
google.com:443
8.8.8.8:53
เพื่อสอบถามเกี่ยวกับ IP ของ google.com
8.8.8.8:53
สิ่งนี้จะทริกเกอร์ตัวแปร in_address
ซึ่งมีข้อมูลเช่น ipaddress
8.8.8.8:53
ไปยังเซิร์ฟเวอร์ Brook8.8.8.8:53
และส่งคืนผลลัพธ์ เช่น 1.2.3.4
ไปยังไคลเอนต์ Brook1.2.3.4:443
1.2.3.4:443
1.2.3.4:443
สิ่งนี้จะทริกเกอร์ตัวแปร in_address
ซึ่งมีข้อมูลเช่น ipaddress
1.2.3.4:443
ไปยังเซิร์ฟเวอร์ Brook1.2.3.4:443
และส่งคืนข้อมูลไปยังไคลเอนต์ Brookgoogle.com:443
8.8.8.8:443
เพื่อสอบถามเกี่ยวกับ IP ของ google.com
8.8.8.8:443
สิ่งนี้จะทริกเกอร์ตัวแปร in_address
ซึ่งมีข้อมูลเช่น ipaddress
8.8.8.8:443
ไปยังเซิร์ฟเวอร์ Brook8.8.8.8:443
และส่งคืนผลลัพธ์ เช่น 1.2.3.4
ไปยังไคลเอนต์ Brook1.2.3.4:443
1.2.3.4:443
1.2.3.4:443
สิ่งนี้จะทริกเกอร์ตัวแปร in_address
ซึ่งมีข้อมูลเช่น ipaddress
1.2.3.4:443
ไปยังเซิร์ฟเวอร์ Brook1.2.3.4:443
และส่งคืนข้อมูลไปยังไคลเอนต์ Brookเพื่อหลีกเลี่ยงความไม่มีประสิทธิภาพของ Fake DNS โปรดอ่านบทความนี้
in_brooklinks
ถูกทริกเกอร์:in_dnsquery
ถูกทริกเกอร์ คุณสามารถประมวลผลได้ตามต้องการ เช่น:in_address
ถูกทริกเกอร์ คุณสามารถประมวลผลได้ตามต้องการ เช่น:in_httprequest
และ in_httpresponse
ในภายหลังin_httprequest
ถูกทริกเกอร์ คุณสามารถประมวลผลได้ตามต้องการ เช่น:in_httpresponse
ถูกทริกเกอร์ คุณสามารถประมวลผลได้ตามต้องการ เช่น:สำหรับข้อมูลโดยละเอียดเกี่ยวกับคุณสมบัติและการตอบสนองของตัวแปร โปรดดูเนื้อหาต่อไปนี้
ตัวแปร | พิมพ์ | เงื่อนไข | เวลา | คำอธิบาย | ประเภทออก |
---|---|---|---|---|---|
in_brooklinks | แผนที่ | - | ก่อนที่จะเชื่อมต่อ | กำหนดลิงค์บรู๊คหลายอันไว้ล่วงหน้า จากนั้นระบุโดยทางโปรแกรมว่าจะเชื่อมต่อลิงค์ใด | แผนที่ |
in_dnsquery | แผนที่ | FakeDNS: เปิด | เมื่อเกิดการสอบถาม DNS | สคริปต์สามารถตัดสินใจได้ว่าจะจัดการกับคำขอนี้อย่างไร | แผนที่ |
ใน_ที่อยู่ | แผนที่ | - | เมื่อเชื่อมต่อกับที่อยู่ | สคริปต์สามารถตัดสินใจได้ว่าจะเชื่อมต่ออย่างไร | แผนที่ |
in_httprequest | แผนที่ | - | เมื่อมีคำขอ HTTP(S) เข้ามา | สคริปต์สามารถตัดสินใจได้ว่าจะจัดการคำขอนี้อย่างไร | แผนที่ |
in_httprequest,in_httpresponse | แผนที่ | - | เมื่อมีการตอบกลับ HTTP(S) เข้ามา | สคริปต์สามารถตัดสินใจได้ว่าจะจัดการกับการตอบสนองนี้อย่างไร | แผนที่ |
สำคัญ | พิมพ์ | คำอธิบาย | ตัวอย่าง |
---|---|---|---|
- | บูล | ไร้ความหมาย | จริง |
out
จะถูกละเว้นหากไม่ใช่ประเภท map
สำคัญ | พิมพ์ | คำอธิบาย | ตัวอย่าง |
---|---|---|---|
- | - | - | - |
ชื่อที่กำหนดเอง | เชือก | ลิงค์บรูค | ลำธาร://... |
- | - | - | - |
สำคัญ | พิมพ์ | คำอธิบาย | ตัวอย่าง |
---|---|---|---|
โดเมน | เชือก | ชื่อโดเมน | google.com |
พิมพ์ | เชือก | ประเภทแบบสอบถาม | ก |
สมัคร | เชือก | รหัสแอปหรือเส้นทาง | com.google.Chrome.helper |
อินเตอร์เฟซ | เชือก | อินเตอร์เฟซเครือข่าย แม็กเท่านั้น | en0 |
out
หากเป็นประเภท error
จะถูกบันทึกไว้ในบันทึก ละเว้นหากไม่ใช่ map
ประเภท
สำคัญ | พิมพ์ | คำอธิบาย | ตัวอย่าง |
---|---|---|---|
ปิดกั้น | บูล | ไม่ว่าจะบล็อก ค่าเริ่มต้นเป็น false | เท็จ |
ไอพี | เชือก | ระบุ IP โดยตรง ใช้ได้เฉพาะเมื่อ type เป็น A / AAAA | 1.2.3.4 |
ระบบ | บูล | แก้ไขโดย System DNS ค่าเริ่มต้นเป็น false | เท็จ |
บายพาส | บูล | แก้ไขโดย Bypass DNS ค่าเริ่มต้นเป็น false | เท็จ |
บรูคลิงค์คีย์ | เชือก | เมื่อจำเป็นต้องเชื่อมต่อเซิร์ฟเวอร์ ให้เชื่อมต่อกับเซิร์ฟเวอร์ที่ระบุด้วยคีย์ in_brooklinks แทน | ชื่อที่กำหนดเอง |
สำคัญ | พิมพ์ | คำอธิบาย | ตัวอย่าง |
---|---|---|---|
เครือข่าย | เชือก | ประเภทเครือข่าย ค่า tcp / udp | ทีพีพี |
ไอแพดเดรส | เชือก | ที่อยู่ประเภท IP มีเพียง ipaddress และ domainaddress เท่านั้น โปรดทราบว่าไม่มีความสัมพันธ์ระหว่างทั้งสองนี้ | 1.2.3.4:443 |
ที่อยู่โดเมน | เชือก | ที่อยู่ประเภทโดเมน เนื่องจาก FakeDNS เราจึงสามารถรับที่อยู่ชื่อโดเมนได้ที่นี่ | google.com:443 |
สมัคร | เชือก | รหัสแอปหรือเส้นทาง | com.google.Chrome.helper |
อินเตอร์เฟซ | เชือก | อินเตอร์เฟซเครือข่าย แม็กเท่านั้น | en0 |
out
หากเป็นประเภท error
จะถูกบันทึกไว้ในบันทึก ละเว้นหากไม่ใช่ map
ประเภท
สำคัญ | พิมพ์ | คำอธิบาย | ตัวอย่าง |
---|---|---|---|
ปิดกั้น | บูล | ไม่ว่าจะบล็อก ค่าเริ่มต้นเป็น false | เท็จ |
ไอแพดเดรส | เชือก | ที่อยู่ประเภท IP เขียนปลายทางใหม่ | 1.2.3.4:443 |
ipaddressfrombypassdns | เชือก | ใช้ Bypass DNS เพื่อรับ A หรือ AAAA IP และเขียนปลายทางใหม่ ใช้ได้เฉพาะเมื่อมีที่อยู่ domainaddress ค่า A / AAAA | ก |
บายพาส | บูล | บายพาส ค่าเริ่มต้นเป็น false หากเป็น true และ domainaddress จะต้องระบุ ipaddress หรือ ipaddressfrombypassdns | เท็จ |
มิทม์ | บูล | ไม่ว่าจะดำเนินการ MITM หรือไม่ ค่าเริ่มต้น false ใช้ได้เฉพาะเมื่อ network เป็น tcp จำเป็นต้องติดตั้ง CA ดูด้านล่าง | เท็จ |
มิทม์โปรโตคอล | เชือก | ต้องระบุโปรโตคอล MITM อย่างชัดเจน ค่าคือ http / https | https |
mitmcertdomain | เชือก | ชื่อโดเมนใบรับรอง MITM ซึ่งนำมาจาก domainaddress ตามค่าเริ่มต้น หาก ipaddress และ mitm เป็น true และ mitmprotocol เป็น https จะต้องระบุอย่างชัดเจน | ตัวอย่าง.com |
ถุงมือกับร่างกาย | บูล | ไม่ว่าจะจัดการเนื้อหา http หรือไม่ ค่าเริ่มต้น false จะอ่านเนื้อความของคำขอและการตอบกลับลงในหน่วยความจำและโต้ตอบกับสคริปต์ ขีดจำกัดหน่วยความจำรวม iOS 50M อาจทำให้กระบวนการหยุดทำงาน | เท็จ |
mitmautohandlecompress | บูล | ว่าจะขยายขนาดเนื้อหา http โดยอัตโนมัติหรือไม่เมื่อโต้ตอบกับสคริปต์ ค่าเริ่มต้น false | เท็จ |
mitmclienttimeout | ภายใน | หมดเวลาสำหรับการพูดคุยกับเซิร์ฟเวอร์ MITM วินาที ค่าเริ่มต้นคือ 0 | 0 |
mitmserverreadtimeout | ภายใน | หมดเวลาสำหรับ MITM ที่อ่านจากไคลเอ็นต์ วินาที ค่าเริ่มต้นคือ 0 | 0 |
mitmserverwritetimeout | ภายใน | หมดเวลาสำหรับการเขียน MITM ไปยังไคลเอ็นต์ วินาที ค่าเริ่มต้นคือ 0 | 0 |
บรูคลิงค์คีย์ | เชือก | เมื่อจำเป็นต้องเชื่อมต่อเซิร์ฟเวอร์ ให้เชื่อมต่อกับเซิร์ฟเวอร์ที่ระบุด้วยคีย์ in_brooklinks แทน | ชื่อที่กำหนดเอง |
สำคัญ | พิมพ์ | คำอธิบาย | ตัวอย่าง |
---|---|---|---|
URL | เชือก | URL | https://example.com/hello |
วิธี | เชือก | วิธีการ HTTP | รับ |
ร่างกาย | ไบต์ | เนื้อความคำขอ HTTP | - |
- | เชือก | ฟิลด์อื่นๆ คือส่วนหัว HTTP | - |
out
จะต้องตั้งค่าเป็นการร้องขอหรือการตอบกลับ
สำคัญ | พิมพ์ | คำอธิบาย | ตัวอย่าง |
---|---|---|---|
รหัสสถานะ | ภายใน | รหัสสถานะ HTTP | 200 |
ร่างกาย | ไบต์ | เนื้อหาการตอบสนอง HTTP | - |
- | เชือก | ฟิลด์อื่นๆ คือส่วนหัว HTTP | - |
out
จะต้องตั้งค่าเป็นการตอบกลับ
ใน Brook GUI สคริปต์จะถูกสรุปลงใน Modules มีบางโมดูลอยู่แล้ว และสามโมดูลนั้นก็ไม่ใช่เรื่องมหัศจรรย์ มันแค่รวม _header.tengo และ _footer.tengo เข้าด้วยกันโดยอัตโนมัติ ดังนั้นคุณเพียงแค่ต้องเขียนโมดูลเองเท่านั้น
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
หากคุณใช้ tun2brook คุณสามารถรวมหลายโมดูลให้เป็นสคริปต์ที่สมบูรณ์ด้วยตนเองได้ด้วยวิธีต่อไปนี้ ตัวอย่างเช่น:
cat _header.tengo > my.tengo
cat block_google_secure_dns.tengo >> my.tengo
cat block_aaaa.tengo >> my.tengo
cat _footer.tengo >> my.tengo
ไวยากรณ์ภาษา Tengo
ห้องสมุด
ข้อความ: นิพจน์ทั่วไป การแปลงสตริง และการจัดการ
คณิตศาสตร์: ค่าคงที่และฟังก์ชันทางคณิตศาสตร์
ครั้ง: ฟังก์ชันที่เกี่ยวข้องกับเวลา
rand: ฟังก์ชั่นสุ่ม
fmt: ฟังก์ชั่นการจัดรูปแบบ
json: ฟังก์ชัน JSON
enum: ฟังก์ชันการแจงนับ
hex: ฟังก์ชั่นการเข้ารหัสและถอดรหัส hex
base64: ฟังก์ชั่นการเข้ารหัสและถอดรหัส base64
brook
: โมดูลบรู๊ค
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
หากคุณกำลังเขียนสคริปต์ที่ซับซ้อน GUI อาจไม่สะดวกในการแก้ไขข้อบกพร่อง ขอแนะนำให้ใช้ tun2brook บนเดสก์ท็อปเพื่อแก้ไขจุดบกพร่องด้วย fmt.println
https://txthinking.github.io/ca/ca.pem
ระบบปฏิบัติการ | ยังไง |
---|---|
ไอโอเอส | https://www.youtube.com/watch?v=HSGPC2vpDGk |
หุ่นยนต์ | Android มี CA ผู้ใช้และ CA ระบบ ต้องติดตั้งในระบบ CA หลังจาก ROOT |
ระบบปฏิบัติการ macOS | nami install mad ca.txthinking , sudo mad install --ca ~/.nami/bin/ca.pem |
หน้าต่าง | nami install mad ca.txthinking ผู้ดูแลระบบ: mad install --ca ~/.nami/bin/ca.pem |
ซอฟต์แวร์บางตัวอาจไม่อ่าน CA ของระบบ คุณสามารถใช้
curl --cacert ~/.nami/bin/ca.pem
เพื่อตรวจแก้จุดบกพร่อง
Brook OpenWRT: รองรับ IPv4/IPv6/TCP/UDP อย่างสมบูรณ์แบบ
จุดยืนของ Brook เกี่ยวกับ IPv6 นั้นเป็นไปในเชิงบวก หากเซิร์ฟเวอร์หรือสภาพแวดล้อมในเครื่องของคุณไม่มีสแต็ก IPv6 โปรดอ่านบทความนี้
brook link --address
ไคลเอนต์ Brook จะพยายามแก้ไข IP ของโดเมนโดยใช้ DNS ในเครื่อง โดยเลือกใช้บันทึก AAAA ตัวอย่างเช่น:Connectivity Check
หากได้ผลบ้างแต่ไม่ได้ผล แสดงว่าเกิดความไม่เสถียรTest IPv4 TCP
สำหรับการทดสอบ การทดสอบนี้ได้ฮาร์ดโค้ดที่อยู่ IP ดังนั้นจึงไม่ทริกเกอร์การแก้ไข DNSTest IPv4 UDP
สำหรับการทดสอบ การทดสอบนี้ได้ฮาร์ดโค้ดที่อยู่ IP ดังนั้นจึงไม่ทริกเกอร์การแก้ไข DNSTest IPv6 TCP
สำหรับการทดสอบ การทดสอบนี้ได้ฮาร์ดโค้ดที่อยู่ IP ดังนั้นจึงไม่ทริกเกอร์การแก้ไข DNSTest IPv6 UDP
สำหรับการทดสอบ การทดสอบนี้ได้ฮาร์ดโค้ดที่อยู่ IP ดังนั้นจึงไม่ทริกเกอร์การแก้ไข DNSEcho Client
สำหรับการทดสอบ หากเซิร์ฟเวอร์ echo ที่ป้อนเป็นที่อยู่โดเมน จะทริกเกอร์การแก้ไข DNSBlock Google Secure DNS
ก็เพียงพอแล้ว สำหรับกรณีอื่นๆ โปรดดูบทความนี้Block Google Secure DNS
Bypass Geo
Bypass Apple
: เพื่อป้องกันปัญหาในการรับการแจ้งเตือนข้อความของ AppleBypass China domain
หรือ Bypass China domain A
: ก่อนหน้านี้ใช้ Bypass DNS
เพื่อรับ IP จากนั้น Bypass Geo
หรือโมดูลอื่น ๆ จะตัดสินใจว่าจะบายพาสหรือไม่ หลังจะข้ามโดยตรงหลังจากได้รับ IP ด้วย Bypass DNS
โดยใช้บันทึก A จำเป็นต้องใช้อย่างหลังหากในพื้นที่ของคุณไม่รองรับ IPv6 แต่ละคำสั่งย่อยมีพารามิเตอร์ --example
ที่สามารถพิมพ์ตัวอย่างการใช้งานขั้นต่ำได้
Brook - เครื่องมือเครือข่ายที่ตั้งโปรแกรมได้ข้ามแพลตฟอร์ม
ลำธาร
brook --help
การใช้งาน :
Brook [GLOBAL OPTIONS] command [COMMAND OPTIONS] [ARGUMENTS...]
--blockCIDR4List ="": หนึ่ง CIDR ต่อบรรทัด, https://, http:// หรือพาธสัมบูรณ์ของไฟล์ในเครื่อง เช่น: https://raw.githubusercontent.com/txthinking/brook/master/programmable/list/example_cidr4 .txt ทำงานร่วมกับเซิร์ฟเวอร์/wsserver/wssserver/quicserver
--blockCIDR6List ="": หนึ่ง CIDR ต่อบรรทัด, https://, http:// หรือพาธสัมบูรณ์ของไฟล์ในเครื่อง เช่น: https://raw.githubusercontent.com/txthinking/brook/master/programmable/list/example_cidr6 .txt ทำงานร่วมกับเซิร์ฟเวอร์/wsserver/wssserver/quicserver
--blockDomainList ="": หนึ่งโดเมนต่อบรรทัด โหมดการจับคู่ส่วนต่อท้าย https://, http:// หรือพาธสัมบูรณ์ของไฟล์ในเครื่อง ชอบ: https://raw.githubusercontent.com/txthinking/brook/master/programmable/list/example_domain.txt ทำงานร่วมกับเซิร์ฟเวอร์/wsserver/wssserver/quicserver
--blockGeoIP ="": บล็อก IP ตามรหัสประเทศทางภูมิศาสตร์ เช่น สหรัฐอเมริกา ทำงานร่วมกับเซิร์ฟเวอร์/wsserver/wssserver/quicserver
--blockListUpdateInterval ="": อัปเดตรายการ --blockDomainList,--blockCIDR4List,--blockCIDR6List ช่วงเวลา วินาที ค่าเริ่มต้น 0 อ่านเพียงครั้งเดียวเมื่อเริ่มต้น (ค่าเริ่มต้น: 0)
--clientHKDFInfo ="": ข้อมูลไคลเอ็นต์ HKDF เวลาส่วนใหญ่คุณไม่จำเป็นต้องเปลี่ยนแปลงสิ่งนี้ หากมีการเปลี่ยนแปลง ลิงก์บรู๊คทั้งหมดและแต่ละลิงก์ในฝั่งไคลเอ็นต์จะต้องเหมือนกัน ฉันหมายถึงแต่ละรายการ (ค่าเริ่มต้น: "บรู๊ค")
--dialWithDNS ="": เมื่อจำเป็นต้องแก้ไขชื่อโดเมน ให้ใช้ DNS ที่ระบุ เช่น 8.8.8.8:53 หรือ https://dns.google/dns-query?address=8.8.8.8%3A443 จำเป็นต้องระบุที่อยู่ โปรดทราบว่าสำหรับคำสั่งฝั่งไคลเอ็นต์ สิ่งนี้จะไม่ส่งผลกระทบต่อไคลเอนต์ที่ส่งที่อยู่โดเมนไปยังเซิร์ฟเวอร์
--dialWithDNSPrefer ="": ใช้กับพารามิเตอร์ dialWithDNS ต้องการบันทึกหรือบันทึก AAAA ค่าคือ A หรือ AAAA
--dialWithIP4 ="": เมื่อเครื่องปัจจุบันสร้างการเชื่อมต่อเครือข่ายกับ IPv4 ภายนอกทั้ง TCP และ UDP จะถูกใช้เพื่อระบุ IPv4 ที่ใช้
--dialWithIP6 ="": เมื่อเครื่องปัจจุบันสร้างการเชื่อมต่อเครือข่ายกับ IPv6 ภายนอกทั้ง TCP และ UDP จะถูกใช้เพื่อระบุ IPv6 ที่ใช้
--dialWithNIC ="": เมื่อเครื่องปัจจุบันสร้างการเชื่อมต่อเครือข่ายไปภายนอกทั้ง TCP และ UDP จะถูกใช้เพื่อระบุ NIC ที่ใช้
--dialWithSocks5 ="": เมื่อเครื่องปัจจุบันสร้างการเชื่อมต่อเครือข่ายไปภายนอกทั้ง TCP และ UDP ด้วยพร็อกซี Socks5 ของคุณ เช่น 127.0.0.1:1081
--dialWithSocks5Password ="": ถ้ามี
--dialWithSocks5TCPTimeout ="": เวลา (ค่าเริ่มต้น: 0)
--dialWithSocks5UDPTimeout ="": เวลา (ค่าเริ่มต้น: 60)
--dialWithSocks5Username ="": ถ้ามี
--ipLimitInterval ="": ช่วงเวลา (s) สำหรับ ipLimitMax (ค่าเริ่มต้น: 0)
--ipLimitMax ="": จำกัดจำนวนที่อยู่ IP ไคลเอ็นต์ โปรดใช้ความระมัดระวังเมื่อใช้พารามิเตอร์นี้ เนื่องจากไคลเอ็นต์อาจมี IP แบบไดนามิก ทำงานร่วมกับเซิร์ฟเวอร์/wsserver/wssserver/quicserver (ค่าเริ่มต้น: 0)
--ipLimitWait ="": ระยะเวลาในการรอการกู้คืนหลังจากเกิน ipLimitMax (ค่าเริ่มต้น: 0)
--log ="": เปิดใช้งานบันทึก ค่าที่ถูกต้องคือเส้นทางของไฟล์หรือ 'คอนโซล' ส่ง SIGUSR1 ให้ฉันเพื่อรีเซ็ตไฟล์บันทึกบนระบบยูนิกซ์ หากคุณต้องการดีบัก SOCKS5 lib ให้ตั้งค่า env SOCKS5_DEBUG=true
--pid ="": เส้นทางไฟล์ที่ใช้ในการจัดเก็บ pid ส่ง SIGUSR1 ให้ฉันเพื่อรีเซ็ตไฟล์ --serverLog บนระบบยูนิกซ์
--pprof ="": ไปที่ http pprof Listen addr เช่น :6060
--prometheus ="": prometheus http Listen addr เช่น :7070. หากส่งผ่านเครือข่ายสาธารณะ แนะนำให้ใช้กับ nico
--prometheusPath ="": เส้นทาง http ของโพรมีธีอุส เช่น /xxx หากส่งสัญญาณบนเครือข่ายสาธารณะ แนะนำให้ใช้ค่าที่คาดเดายาก
--serverHKDFInfo ="": ข้อมูลเซิร์ฟเวอร์ HKDF เวลาส่วนใหญ่คุณไม่จำเป็นต้องเปลี่ยนแปลงสิ่งนี้ หากมีการเปลี่ยนแปลง ลิงก์บรู๊คทั้งหมดและแต่ละลิงก์ในฝั่งไคลเอ็นต์จะต้องเหมือนกัน ฉันหมายถึงแต่ละรายการ (ค่าเริ่มต้น: "บรู๊ค")
--serverLog ="": เปิดใช้งานบันทึกเซิร์ฟเวอร์ การรับส่งข้อมูล และอื่นๆ ค่าที่ถูกต้องคือเส้นทางของไฟล์หรือ 'คอนโซล' ส่ง SIGUSR1 ให้ฉันเพื่อรีเซ็ตไฟล์บันทึกบนระบบยูนิกซ์ ไม่เกิดร่วมกันกับพารามิเตอร์ --log ทำงานร่วมกับเซิร์ฟเวอร์/wsserver/wssserver/quicserver พร้อมโปรโตคอล brook
--speedLimit ="": จำกัดความเร็ว (b), 500kb/s เช่น: 500000 ทำงานร่วมกับเซิร์ฟเวอร์/wsserver/wssserver/quicserver (ค่าเริ่มต้น: 0)
--tag ="": แท็กสามารถใช้ในกระบวนการได้ โดยจะถูกผนวกเข้ากับบันทึกหรือ serverLog เช่น: 'key1:value1' แท็กทั้งหมดจะถูกผนวกเป็นพารามิเตอร์การสืบค้นทีละรายการใน userAPI
--userAPI ="": เมื่อคุณสร้างระบบผู้ใช้ของคุณเอง Brook Server จะส่งคำขอ GET ไปยัง userAPI ของคุณเพื่อตรวจสอบว่าโทเค็นถูกต้องหรือไม่ ตัวอย่างเช่น: https://your-api-server.com/a_unpredictable_path ใช่ ขอแนะนำให้เพิ่มเส้นทางที่คาดเดาไม่ได้ไปยัง https API ของคุณ แน่นอนว่า คุณยังสามารถใช้ http api สำหรับการสื่อสารเครือข่ายภายในได้เช่นกัน รูปแบบคำขอคือ https://your-api-server.com/a_unpredictable_path?token=xxx เมื่อการตอบสนองเป็น 200 เนื้อความควรเป็นตัวระบุเฉพาะของผู้ใช้ เช่น ID ผู้ใช้ รหัสสถานะอื่นๆ ทั้งหมดจะถือว่าเป็นตัวแทนของผู้ใช้ที่ผิดกฎหมาย และในกรณีเหล่านี้ ส่วนเนื้อหาควรเป็นสตริงที่อธิบายข้อผิดพลาด ควรใช้กับ --serverLog และ server/wsserver/wssserver/quicserver พร้อมโปรโตคอล brook สำหรับข้อมูลเพิ่มเติม โปรดอ่าน https://github.com/txthinking/brook/blob/master/protocol/user.md
--userAPIInvalidCacheTime ="": เมื่อโทเค็นได้รับการตรวจสอบและไม่ถูกต้องแล้ว userAPI จะไม่ถูกขอให้ตรวจสอบอีกครั้งในช่วงระยะเวลาหนึ่ง ต้องตั้งค่าที่สมเหตุสมผล มิฉะนั้นจะส่งผลต่อประสิทธิภาพของการเชื่อมต่อขาเข้าแต่ละรายการ โปรดทราบว่าสิ่งนี้อาจส่งผลต่อประสบการณ์ผู้ใช้ เมื่อคุณเปลี่ยนสถานะผู้ใช้จากไม่ถูกต้องเป็นถูกต้องในระบบผู้ใช้ของคุณ (ค่าเริ่มต้น: 1800)
--userAPIValidCacheTime ="": เมื่อโทเค็นได้รับการตรวจสอบและถูกต้องแล้ว userAPI จะไม่ถูกขอให้ตรวจสอบอีกครั้งในช่วงระยะเวลาหนึ่ง ต้องตั้งค่าที่เหมาะสม มิฉะนั้นจะส่งผลต่อประสิทธิภาพของการเชื่อมต่อขาเข้าแต่ละรายการ (ค่าเริ่มต้น: 3600)
--version, -v : พิมพ์เวอร์ชัน
เริ่มเซิร์ฟเวอร์ลำธารที่รองรับ tcp และ udp
--blockCIDR4List ="": ตัวเลือกนี้จะถูกลบออกในเวอร์ชันต่อๆ ไป โปรดใช้ตัวเลือกส่วนกลางแทน
--blockCIDR6List ="": ตัวเลือกนี้จะถูกลบออกในเวอร์ชันต่อๆ ไป โปรดใช้ตัวเลือกสากลแทน
--blockDomainList ="": ตัวเลือกนี้จะถูกลบออกในเวอร์ชันต่อๆ ไป โปรดใช้ตัวเลือกสากลแทน
--blockGeoIP ="": ตัวเลือกนี้จะถูกลบออกในเวอร์ชันต่อๆ ไป โปรดใช้ตัวเลือกสากลแทน
--example : แสดงตัวอย่างการใช้งานขั้นต่ำ
--listen, -l ="": ที่อยู่การฟัง เช่น: ':9999'
--รหัสผ่าน, -p ="": รหัสผ่านเซิร์ฟเวอร์
--tcpTimeout ="": เวลา (ค่าเริ่มต้น: 0)
--udpTimeout ="": เวลา (ค่าเริ่มต้น: 0)
--updateListInterval ="": ตัวเลือกนี้จะถูกลบออกในเวอร์ชันอนาคต โปรดใช้ตัวเลือกสากลแทน (ค่าเริ่มต้น: 0)
เริ่มต้นไคลเอนต์ลำธารที่รองรับ tcp และ udp มันสามารถเปิดพร็อกซี Socks5 ได้ [src <-> Socks5 <-> $ brook client <-> $ brook server <-> dst]
--example : แสดงตัวอย่างการใช้งานขั้นต่ำ
--http ="": จะฟังการเชื่อมต่อพร็อกซี HTTP ได้ที่ไหน
--link ="": brook link คุณสามารถรับมันผ่าน $ brook link พารามิเตอร์ wssserver และรหัสผ่านจะถูกละเว้น
--password, -p ="": รหัสผ่านเซิร์ฟเวอร์ Brook
--server, -s ="": ที่อยู่เซิร์ฟเวอร์ Brook เช่น: 1.2.3.4:9999
--socks5 ="": จะฟังการเชื่อมต่อ SOCKS5 ได้ที่ไหน (ค่าเริ่มต้น: 127.0.0.1:1080)
--socks5ServerIP ="": เฉพาะในกรณีที่ IP เซิร์ฟเวอร์ Socks5 ของคุณแตกต่างจาก IP การฟัง
--tcpTimeout ="": เวลา (ค่าเริ่มต้น: 0)
--udpTimeout ="": เวลา (ค่าเริ่มต้น: 0)
เริ่ม brook wsserver ที่รองรับ tcp และ udp จะเปิดเซิร์ฟเวอร์ http มาตรฐานและเซิร์ฟเวอร์ websocket
--blockCIDR4List ="": ตัวเลือกนี้จะถูกลบออกในเวอร์ชันต่อๆ ไป โปรดใช้ตัวเลือกส่วนกลางแทน
--blockCIDR6List ="": ตัวเลือกนี้จะถูกลบออกในเวอร์ชันต่อๆ ไป โปรดใช้ตัวเลือกสากลแทน
--blockDomainList ="": ตัวเลือกนี้จะถูกลบออกในเวอร์ชันต่อๆ ไป โปรดใช้ตัวเลือกสากลแทน
--blockGeoIP ="": ตัวเลือกนี้จะถูกลบออกในเวอร์ชันต่อๆ ไป โปรดใช้ตัวเลือกสากลแทน
--example : แสดงตัวอย่างการใช้งานขั้นต่ำ
--listen, -l ="": ที่อยู่การฟัง เช่น: ':80'
--รหัสผ่าน, -p ="": รหัสผ่านเซิร์ฟเวอร์
--path ="": เส้นทาง URL (ค่าเริ่มต้น: /ws)
--tcpTimeout ="": เวลา (ค่าเริ่มต้น: 0)
--udpTimeout ="": เวลา (ค่าเริ่มต้น: 0)
--updateListInterval ="": ตัวเลือกนี้จะถูกลบออกในเวอร์ชันอนาคต โปรดใช้ตัวเลือกสากลแทน (ค่าเริ่มต้น: 0)
--withoutBrookProtocol : ข้อมูลจะไม่ถูกเข้ารหัสด้วยโปรโตคอลลำธาร
--xForwardedFor : แทนที่ช่อง from ใน --log โปรดทราบว่าสิ่งนี้อาจถูกปลอมแปลง
เริ่ม brook wsclient ที่รองรับ tcp และ udp มันสามารถเปิดพร็อกซี Socks5 ได้ [src <-> Socks5 <-> $ brook wsclient <-> $ brook wsserver <-> dst]
--example : แสดงตัวอย่างการใช้งานขั้นต่ำ
--http ="": จะฟังการเชื่อมต่อพร็อกซี HTTP ได้ที่ไหน
--link ="": brook link คุณสามารถรับมันผ่าน $ brook link พารามิเตอร์ wssserver และรหัสผ่านจะถูกละเว้น
--password, -p ="": รหัสผ่าน Brook wsserver
--socks5 ="": จะฟังการเชื่อมต่อ SOCKS5 ได้ที่ไหน (ค่าเริ่มต้น: 127.0.0.1:1080)
--socks5ServerIP ="": เฉพาะในกรณีที่ IP เซิร์ฟเวอร์ Socks5 ของคุณแตกต่างจาก IP การฟัง
--tcpTimeout ="": เวลา (ค่าเริ่มต้น: 0)
--udpTimeout ="": เวลา (ค่าเริ่มต้น: 0)
--wsserver, -s ="": ที่อยู่ wsserver ของ Brook เช่น: ws://1.2.3.4:80 หากไม่มีเส้นทาง ดังนั้น /ws จะถูกใช้ ห้ามละเว้นพอร์ตไม่ว่ากรณีใดๆ
เริ่ม brook wssserver ที่รองรับ tcp และ udp จะเปิดเซิร์ฟเวอร์ https มาตรฐานและเซิร์ฟเวอร์ websocket
--blockCIDR4List ="": ตัวเลือกนี้จะถูกลบออกในเวอร์ชันต่อๆ ไป โปรดใช้ตัวเลือกสากลแทน
--blockCIDR6List ="": ตัวเลือกนี้จะถูกลบออกในเวอร์ชันต่อๆ ไป โปรดใช้ตัวเลือกส่วนกลางแทน
--blockDomainList ="": ตัวเลือกนี้จะถูกลบออกในเวอร์ชันต่อๆ ไป โปรดใช้ตัวเลือกสากลแทน
--blockGeoIP ="": ตัวเลือกนี้จะถูกลบออกในเวอร์ชันต่อๆ ไป โปรดใช้ตัวเลือกสากลแทน
--cert ="": เส้นทางสัมบูรณ์ของไฟล์ใบรับรองสำหรับโดเมน เช่น /path/to/cert.pem หากใบรับรองหรือคีย์ใบรับรองว่างเปล่า ใบรับรองจะออกให้โดยอัตโนมัติ
--certkey ="": เส้นทางสัมบูรณ์ของไฟล์คีย์ใบรับรองสำหรับโดเมน เช่น /path/to/certkey.pem หากใบรับรองหรือคีย์ใบรับรองว่างเปล่า ใบรับรองจะออกให้โดยอัตโนมัติ
--domainaddress ="": เช่น: domain.com:443. หากคุณเลือกที่จะออกใบรับรองโดยอัตโนมัติ โดเมนจะต้องได้รับการแก้ไขเป็น IP ของเซิร์ฟเวอร์ และจะใช้พอร์ต 80 ด้วย
--example : แสดงตัวอย่างการใช้งานขั้นต่ำ
--รหัสผ่าน, -p ="": รหัสผ่านเซิร์ฟเวอร์
--path ="": เส้นทาง URL (ค่าเริ่มต้น: /ws)
--tcpTimeout ="": เวลา (ค่าเริ่มต้น: 0)
--udpTimeout ="": เวลา (ค่าเริ่มต้น: 0)
--updateListInterval ="": ตัวเลือกนี้จะถูกลบออกในเวอร์ชันอนาคต โปรดใช้ตัวเลือกสากลแทน (ค่าเริ่มต้น: 0)
--withoutBrookProtocol : ข้อมูลจะไม่ถูกเข้ารหัสด้วยโปรโตคอลลำธาร
เริ่ม brook wssclient ที่รองรับ tcp และ udp มันสามารถเปิดพร็อกซี Socks5 ได้ [src <-> Socks5 <-> $ brook wssclient <-> $ brook wssserver <-> dst]
--example : แสดงตัวอย่างการใช้งานขั้นต่ำ
--http ="": จะฟังการเชื่อมต่อพร็อกซี HTTP ได้ที่ไหน
--link ="": brook link คุณสามารถรับมันผ่าน $ brook link พารามิเตอร์ wssserver และรหัสผ่านจะถูกละเว้น
--password, -p ="": รหัสผ่าน Brook wssserver
--socks5 ="": จะฟังการเชื่อมต่อ SOCKS5 ได้ที่ไหน (ค่าเริ่มต้น: 127.0.0.1:1080)
--socks5ServerIP ="": เฉพาะในกรณีที่ IP เซิร์ฟเวอร์ Socks5 ของคุณแตกต่างจาก IP การฟัง
--tcpTimeout ="": เวลา (ค่าเริ่มต้น: 0)
--udpTimeout ="": เวลา (ค่าเริ่มต้น: 0)
--wssserver, -s ="": ที่อยู่ Brook wssserver เช่น wss://google.com:443 หากไม่มีเส้นทาง ระบบจะใช้ /ws ห้ามละเว้นพอร์ตไม่ว่ากรณีใดๆ
เริ่ม brook quicserver ที่รองรับ tcp และ udp
--blockCIDR4List ="": ตัวเลือกนี้จะถูกลบออกในเวอร์ชันต่อๆ ไป โปรดใช้ตัวเลือกส่วนกลางแทน
--blockCIDR6List ="": ตัวเลือกนี้จะถูกลบออกในเวอร์ชันต่อๆ ไป โปรดใช้ตัวเลือกส่วนกลางแทน
--blockDomainList ="": ตัวเลือกนี้จะถูกลบออกในเวอร์ชันต่อๆ ไป โปรดใช้ตัวเลือกสากลแทน
--blockGeoIP ="": ตัวเลือกนี้จะถูกลบออกในเวอร์ชันต่อๆ ไป โปรดใช้ตัวเลือกสากลแทน
--cert ="": เส้นทางสัมบูรณ์ของไฟล์ใบรับรองสำหรับโดเมน เช่น /path/to/cert.pem หากใบรับรองหรือคีย์ใบรับรองว่างเปล่า ใบรับรองจะออกให้โดยอัตโนมัติ
--certkey ="": เส้นทางสัมบูรณ์ของไฟล์คีย์ใบรับรองสำหรับโดเมน เช่น /path/to/certkey.pem หากใบรับรองหรือคีย์ใบรับรองว่างเปล่า ใบรับรองจะออกให้โดยอัตโนมัติ
--domainaddress ="": เช่น: domain.com:443. หากคุณเลือกที่จะออกใบรับรองโดยอัตโนมัติ โดเมนจะต้องได้รับการแก้ไขเป็น IP ของเซิร์ฟเวอร์ และจะใช้พอร์ต 80 ด้วย
--example : แสดงตัวอย่างการใช้งานขั้นต่ำ
--รหัสผ่าน, -p ="": รหัสผ่านเซิร์ฟเวอร์
--tcpTimeout ="": เวลา (ค่าเริ่มต้น: 0)
--udpTimeout ="": เวลา (ค่าเริ่มต้น: 0)
--updateListInterval ="": ตัวเลือกนี้จะถูกลบออกในเวอร์ชันอนาคต โปรดใช้ตัวเลือกสากลแทน (ค่าเริ่มต้น: 0)
--withoutBrookProtocol : ข้อมูลจะไม่ถูกเข้ารหัสด้วยโปรโตคอลลำธาร
เริ่มต้น brook quicclient ที่รองรับ tcp และ udp มันสามารถเปิดพร็อกซี Socks5 ได้ [src <-> Socks5 <-> $ brook quicclient <-> $ brook quicserver <-> dst] (พารามิเตอร์การโทรทั่วโลกจะถูกละเว้น)
--example : แสดงตัวอย่างการใช้งานขั้นต่ำ
--http ="": จะฟังการเชื่อมต่อพร็อกซี HTTP ได้ที่ไหน
--link ="": brook link คุณสามารถรับมันผ่าน $ brook link พารามิเตอร์ wssserver และรหัสผ่านจะถูกละเว้น
--socks5 ="": จะฟังการเชื่อมต่อ SOCKS5 ได้ที่ไหน (ค่าเริ่มต้น: 127.0.0.1:1080)
--socks5ServerIP ="": เฉพาะในกรณีที่ IP เซิร์ฟเวอร์ Socks5 ของคุณแตกต่างจาก IP การฟัง
--tcpTimeout ="": เวลา (ค่าเริ่มต้น: 0)
--udpTimeout ="": เวลา (ค่าเริ่มต้น: 0)
ถ่ายทอดการรับส่งข้อมูลเครือข่ายผ่านลำธาร ซึ่งรองรับ TCP และ UDP การเข้าถึง [จากที่อยู่] เท่ากับการเข้าถึง [ไปยังที่อยู่], [src <-> จากที่อยู่ <-> $ brook server/wsserver/wssserver/quicserver <-> ไปยังที่อยู่]
--example : แสดงตัวอย่างการใช้งานขั้นต่ำ
--from, -f, -l ="": ที่อยู่การฟัง: เช่น ':9999'
--link ="": brook link คุณสามารถรับมันผ่าน $ brook link พารามิเตอร์เซิร์ฟเวอร์และรหัสผ่านจะถูกละเว้น
--รหัสผ่าน, -p ="": รหัสผ่าน
--server, -s ="": brook server หรือ brook wsserver หรือ brook wssserver หรือ brook quicserver เช่น: 1.2.3.4:9999, ws://1.2.3.4:9999, wss://domain:443/ws, ควิก://domain.com:443
--tcpTimeout ="": เวลา (ค่าเริ่มต้น: 0)
--to, -t ="": ที่อยู่ที่ส่งต่อ เช่น: 1.2.3.4:9999
--udpTimeout ="": เวลา (ค่าเริ่มต้น: 0)
เรียกใช้เซิร์ฟเวอร์ DNS บน brook ซึ่งรองรับ TCP และ UDP, [src <-> $ brook dnserversoverbrook <-> $ brook server/wsserver/wssserver/quicserver <-> dns] หรือ [src <-> $ brook dnsserveroverbrook <-> DNSForบายพาส]
--blockDomainList ="": หนึ่งโดเมนต่อบรรทัด โหมดการจับคู่ส่วนต่อท้าย https://, http:// หรือเส้นทางไฟล์สัมบูรณ์ในเครื่อง ชอบ: https://raw.githubusercontent.com/txthinking/brook/master/programmable/list/example_domain.txt
--bypassDomainList ="": หนึ่งโดเมนต่อบรรทัด โหมดการจับคู่ส่วนต่อท้าย https://, http:// หรือเส้นทางไฟล์สัมบูรณ์ในเครื่อง ชอบ: https://raw.githubusercontent.com/txthinking/brook/master/programmable/list/example_domain.txt
--disableA : ปิดการใช้งานแบบสอบถาม
--disableAAAA : ปิดการใช้งานแบบสอบถาม AAAA
--dns ="": เซิร์ฟเวอร์ DNS สำหรับการแก้ไขโดเมนที่ไม่อยู่ในรายการ (ค่าเริ่มต้น: 8.8.8.8:53)
-dnsforbypass = "": เซิร์ฟเวอร์ DNS สำหรับการแก้ไขโดเมนในรายการบายพาส เช่น 223.5.5.5:53 หรือ https://dns.alidns.com/dns-query?address=223.5.5.5:443 จำเป็นต้องอยู่
-ตัวอย่าง : แสดงตัวอย่างการใช้งานน้อยที่สุด
--link = "": ลิงค์ Brook คุณสามารถรับได้ผ่านลิงก์ $ Brook พารามิเตอร์เซิร์ฟเวอร์และรหัสผ่านจะถูกละเว้น
--listen, -l = "": ฟังที่อยู่เช่น: 127.0.0.1:53
-password, -p = "": รหัสผ่าน
-เซิร์ฟเวอร์, -S = "": เซิร์ฟเวอร์ลำธารหรือบรูค WSServer หรือบรูค WSSServer หรือบรูค Quicserver, เช่น: 1.2.3.4:9999, WS: //1.2.3.4: 9999, WSS: //domain.com: 443/ WS, quic: //domain.com: 443
--tcptimeout = "": เวลา (ค่าเริ่มต้น: 0)
-udptimeout = "": เวลา (ค่าเริ่มต้น: 0)
สร้างลิงค์บรูค
-address = "": เมื่อเซิร์ฟเวอร์เป็น Brook WSServer หรือ Brook WSSServer หรือ Brook Quicserver ให้ระบุที่อยู่แทนการแก้ไขที่อยู่จากโฮสต์เช่น 1.2.3.4:443
-ca = "": เมื่อเซิร์ฟเวอร์เป็น Brook WSSServer หรือ Brook Quicserver ระบุ CA สำหรับใบรับรองที่ไม่น่าเชื่อถือเช่น /path/to/ca.pem
-clienthkdfinfo = "": ข้อมูล hkdf ไคลเอน
-ตัวอย่าง : แสดงตัวอย่างการใช้งานน้อยที่สุด
-fragment = "": เมื่อเซิร์ฟเวอร์เป็น brook wssserver ให้แยกไคลเอ็นต์เฮลโลเป็นหลายส่วนแล้วส่งไปทีละตัวด้วยความล่าช้า (มิลลิวินาที) รูปแบบคือ min_length: max_length: min_delay: max_delay ไม่สามารถเป็นศูนย์เช่น 50: 100: 10: 50
-ไม่ปลอดภัย : เมื่อเซิร์ฟเวอร์เป็น Brook WSSServer หรือ Brook Quicserver ไคลเอนต์ไม่ได้ตรวจสอบห่วงโซ่ใบรับรองของเซิร์ฟเวอร์และชื่อโฮสต์
-name = "": ตั้งชื่อเซิร์ฟเวอร์นี้
-password, -p = "": รหัสผ่าน
-เซิร์ฟเวอร์, -S = "": สนับสนุนเซิร์ฟเวอร์ Brook, Brook WSServer, Brook WSSServer, Socks5 Server, Brook Quicserver ชอบ: 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 = "": ข้อมูล HKDF เซิร์ฟเวอร์ส่วนใหญ่คุณไม่จำเป็นต้องเปลี่ยนสิ่งนี้อ่านโปรโตคอล Brook หากคุณไม่รู้ว่านี่คืออะไร
-tlsfingerprint = "": เมื่อเซิร์ฟเวอร์เป็น brook wssserver เลือก tls ลายนิ้วมือ, ค่าสามารถ: chrome
-token = "": โทเค็นแสดงถึงตัวตนของผู้ใช้ สตริงที่เข้ารหัสใน hexadecimal เซิร์ฟเวอร์ต้องเปิดใช้งาน -USerapi โปรดทราบว่า: รองรับโดย Brook GUI เท่านั้น (ยกเว้น OpenWRT) และ Tun2brook
-UDPoversTream : เมื่อเซิร์ฟเวอร์เป็น Brook Quicserver, UDP ผ่านสตรีม ภายใต้สถานการณ์ปกติคุณต้องใช้พารามิเตอร์นี้เนื่องจากขนาด Datagram สูงสุดสำหรับ QUIC นั้นเล็กมาก หมายเหตุ: เฉพาะ Brook CLI และ Tun2brook Suppport สำหรับตอนนี้
-UDPOVERTCP : เมื่อเซิร์ฟเวอร์คือ Brook Server, UDP ผ่าน TCP
-USERNAME, -U = "": ชื่อผู้ใช้เมื่อเซิร์ฟเวอร์เป็นเซิร์ฟเวอร์ SOCKS5
-WithoutBrookProtocol : เมื่อเซิร์ฟเวอร์เป็น Brook WSServer หรือ Brook WSSServer หรือ Brook Quicserver ข้อมูลจะไม่ถูกเข้ารหัสด้วยโปรโตคอล Brook
เรียกใช้ไคลเอนต์และเชื่อมต่อกับลิงค์ Brook ซึ่งรองรับ TCP และ UDP มันสามารถเริ่มพร็อกซี Socks5, [Src <-> Socks5 <-> $ Brook Connect <-> $ Brook Server/WSSERVER/WSSSERVER/QUICSERVER <-> DST]
-ตัวอย่าง : แสดงตัวอย่างการใช้งานน้อยที่สุด
-http = "": จะฟังการเชื่อมต่อพร็อกซี http ได้ที่ไหน
--link, -l = "": ลิงค์ Brook คุณสามารถรับได้ผ่าน $ Brook Link
-SOCKS5 = "": สถานที่ฟังการเชื่อมต่อ SOCKS5 (ค่าเริ่มต้น: 127.0.0.1:1080)
-socks5serverip = "": เฉพาะในกรณีที่ IP เซิร์ฟเวอร์ Socks5 ของคุณแตกต่างจากการฟัง IP
--tcptimeout = "": เวลา (ค่าเริ่มต้น: 0)