Skip to content

Releases: txthinking/brook

v20250202

23 Jan 03:46
8ece514
Compare
Choose a tag to compare

CLI

brook dnsserver, dohserver, dnsserveroverbrook, server, wsserver, wssserver, quicserver can use script to do more complex thing, such as speed limit for a connection or forward to another brook link and more. brook will pass different global variables to the script at different times, and the script only needs to assign the processing result to the global variable out. Read more: https://brook.app

  • --userAPI="": Works with server, wsserver, wssserver, quicserver. When you build your own user system, Brook Server will send GET request to your userAPI to check if token is valid, for example: https://your-api-server.com/a_unpredictable_path. Yes, it is recommended to add an unpredictable path to your https API, of course, you can also use the http api for internal network communication. The request format is https://your-api-server.com/a_unpredictable_path?token=xxx. When the response is 200, the body should be the user's unique identifier, such as user ID; all other status codes are considered to represent an illegitimate user, and in these cases, the body should be a string describing the error. For more information, please read https://github.com/txthinking/brook/blob/master/protocol/user.md
  • --userAPIRateLimit="": Works with --userAPI. Limit the request rate per token to the user API by Brook Server, this will reduce the load on the user API. This is especially important when users have expired, and the userAPIValidCacheTime will not cache the requests, resulting in continuous requests to the user API. The default is 0, which means no limitation. For example, setting it to 1 means the rate is limited to 1 request per token per second. The phrase 'per token' means that each token has its own rate limiter, and they do not interfere with each other (default: 1)
  • --userAPIValidCacheTime="": Works with --userAPI. Once a token is checked and valid, the userAPI will not be requested to validate again for a certain period (s). A reasonable value must be set, otherwise it will affect the performance of each incoming connection (default: 3600)
  • --userLog="": Works with --userAPI. Log, traffic and more. A valid value is file path. Send SIGUSR1 to me to reset the log file on unix system. Mutually exclusive with the --log parameter.
  • --pid="": A file path used to store pid. Send SIGUSR1 to me to reset the --log or --userLog file on unix system
  • --cliToken="": The CLI Token of your Brook Plus or Brook Business account, get it from https://www.txthinking.com/brook.html
  • --script="": Works with server, wsserver, wssserver, quicserver, dnsserver, dohserver, dnsserveroverbrook. https://, http:// or /path/to/file.tengo. Get details at https://brook.app/
  • --scriptUpdateInterval="": Works with --script. The interval (s) to re-fetch script. The default is 0, which means only fetch once on startup (default: 0)
  • All support brook link with token
  • Deprecated some parameters

OpenWrt

Brook for OpenWrt uses the same script as the GUI. Since OpenWrt will abandon ipk and CLI can edit complex rules more conveniently, I have returned openwrt to CLI. brook for OpenWrt is tested on OpenWrt systems, but may work on other Linux systems, but it is not guaranteed.

  • There are two new files: openwrt_linux_amd64 and openwrt_linux_arm64
  • Support brook link with token
  • Support script same with Brook GUI client

ipio

https://github.com/txthinking/ipio

brook-store

https://github.com/TxThinkingInc/brook-store

GUI

  • Add Clear and import, more convenient when importing links
  • The system time will be checked when connecting to prevent unnoticed abnormalities caused by system time errors
  • iOS and macOS: add All Networks & Excludes mode: Include All Networks. But exclude some networks, such as: Apple Push Notification services (APNs) traffic; Wi-Fi Calling, MMS, SMS, and Visual Voicemail; Local network, AirPlay, AirDrop, and CarPlay; XCode Device Communication. And the VPN will not be disconnected between sleep and wake or network changed. Only available for iOS and macOS TUN mode. Note that the Modules still works outside of Excludes
  • macOS: fix App Mode memory leak
  • MITM: support copy as text. Previously, you could only copy hex
  • iOS and macOS: optimized for the latest OS

You can build the OSS version from source, or download a precompiled version with more features.

v20240214

14 Jan 10:24
Compare
Choose a tag to compare

GUI:

  • Removed proxy mode. All in TUN mode. Life is short, I use Brook
  • Modularized all features
  • Rewrote UI
  • iOS: Memory optimization
  • Linux/Windows: Disconnecting will automatically restore the system DNS to its original state. Other platforms do not have this concern.
  • Linux/Windows: You can now identify which programs are initiating TCP and UDP network connections. This also means that you can use scripts to control network access for specific applications. This feature has been completed in the previous macOS version. There is no such API for iOS. Android can bypass the app.
  • Windows: Package using the new msix format. Here and Here
  • Windows: Developed and tested under Windows 11
  • Linux: Optimized startup way
  • Added Test IPv4 tool
  • Added Test IPv6 tool
  • ipk: Removed. Might write a new UI
  • If you signin: Connect API over your Brook only Mode. You must ensure your Brook Server works.
  • Updated documentation: https://brook.app

GUI:

  • 移除 proxy 模式。全端默认 TUN 模式。人生苦短,我用 Brook
  • 将所有功能模块化
  • 重写 UI
  • iOS: 内存优化
  • Linux/Windows: 断开自动将系统 DNS 恢复如初。其他端无此顾虑
  • Linux/Windows: 可以知道是哪个程序在发起 TCP 和 UDP 网络连接。也意味着可以用脚本来针对具体应用程序来进行网络控制。macOS 端上一个版本已完成。iOS 端无此 API。Android 端可以 bypass app
  • Windows: 使用新的 msix 格式打包。这里这里
  • Windows: 在 Windows 11 下开发测试
  • Linux: 优化启动方式
  • 新增 Test IPv4 工具
  • 新增 Test IPv6 工具
  • ipk: 移除. 可能,后续会写一个新的 UI
  • If you signin: Connect API over your Brook only Mode. You must ensure your Brook Server works
  • 文档更新: https://brook.app

CLI

v20230606

28 May 13:21
Compare
Choose a tag to compare

Mac

  • 增加 App 模式,可以看到每个网络请求是哪个 App 发起的
  • 可以跳过 App,可以选择跳过 App 即直连,也可以用脚本控制仅部分 App 可联网或阻断网络,或走不同的 Server,等等
  • 上架 Mac App Store

Windows

  • 可以手动选择当前默认的网卡

iOS, Mac, Android, Linux, Windows

  • 可细粒度编程控制选择走指定的 Server,比如根据目的地,App,等等

可编程

  • in_brooklinks: 连接之前,预定义多个 brook link,之后可编程指定连接哪个
  • in_dnsquery
    • appid: 发起网络请求的 App. 仅 Mac
    • interface: 发起网络请求的网络接口. 仅 Mac
  • in_dnsquery.out
    • brooklinkkey: 当需要连接代理服务器时,转而连接 通过 in_brooklinks 的 key 指定的 brook link
  • in_address
    • appid: 发起网络请求的 App. 仅 Mac
    • interface: 发起网络请求的网络接口. 仅 Mac
  • in_address.out
    • brooklinkkey: 当需要连接代理服务器时,转而连接 通过 in_brooklinks 的 key 指定的 brook link

资源


Mac

  • App Mode, You can see which app initiated each network request
  • Bypass App,You can choose to bypass the app and let it connect directly, or you can use scripts to control only some apps to connect to the Internet or block the network, or use different servers, etc.
  • Available on the Mac App Store

Windows

  • You can manually select the current default network interface

iOS, Mac, Android, Linux, Windows

  • Fine-grained programming control to go to the specified server, such as according to the destination, App, etc.

Programmable

  • in_brooklinks: Before connecting, Predefine multiple brook links, and then programmatically specify which one to connect to
  • in_dnsquery
    • appid: Which app initiated the network request. Mac Only
    • interface: Which interface initiated the network request. Mac Only
  • in_dnsquery.out
    • brooklinkkey: When need to connect the Server,instead, connect to the brook link specified by the key in_brooklinks
  • in_address
    • appid: Which app initiated the network request. Mac Only
    • interface: Which interface initiated the network request. Mac Only
  • in_address.out
    • brooklinkkey: When need to connect the Server,instead, connect to the brook link specified by the key in_brooklinks

Resource

v20230601

14 May 02:46
Compare
Choose a tag to compare

Documentation 新域名

https://brook.app

CLI

  • brook --dialWithNIC
  • brook --dialWithDNS
  • brook --dialWithDNSPrefer
  • brook dhcpserver --interface
  • brook dnsserver
  • brook dnsclient
  • brook dohserver
  • brook dohclient
  • brook wssclient --tlsfingerprint
  • brook relayoverbrook --tlsfingerprint
  • brook dnsserveroverbrook --tlsfingerprint
  • brook tproxy --tlsfingerprint
  • brook link --tlsfingerprint

图形客户端

  • 桌面客户端菜单自适应固定打开状态
  • 在 Intel Mac、Linux 和 Windows 上优化绕过 CIDR TUN 模式的连接时间
  • 脚本:in_address.out.bypass 在 Intel Mac、Linux 和 Windows 上可用
  • 绕过 Geo IP 可在 Intel Mac、Linux 和 Windows 上可用
  • 支持 --tlsfingerprint brook link
  • 脚本: in_guiconfig 弃用

GUI

  • Desktop GUI drawer can be fixed
  • Optimize connecting time in bypass CIDR TUN mode on intel Mac, Linux and Windows
  • Script: in_address.out.bypass is available on intel Mac, Linux and Windows
  • Bypass Geo IP is available on intel Mac, Linux and Windows
  • --tlsfingerprint with brook link
  • Script: in_guiconfig deprecated

v20230404

24 Mar 09:03
Compare
Choose a tag to compare

Documentation

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

v20230404

CLI

  • --prometheus basic prometheus support
  • --prometheusPath

GUI

  • Echo Client: one-click TCP and UDP ping with address
  • bugfix

v20230401

CLI

GUI

  • OpenWRT:
  • iOS / M1 Mac
    • Dark Mode
    • Shortcut
  • Android
    • Dark Mode
    • Shortcut
  • Linux
    • Dark Mode
    • Shortcut
  • Intel Mac
    • Dark Mode
    • Shortcut
  • Windows
    • Dark Mode
    • Shortcut
    • System Tray

v20230401

19 Mar 09:38
Compare
Choose a tag to compare

Documentation

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

CLI

GUI

v20230122

20 Jan 06:48
Compare
Choose a tag to compare

CLI

🇬🇧 CLI Documentation 🇨🇳 CLI 文档

GUI

🇬🇧 GUI Documentation 🇨🇳 GUI 文档

Programmable

in_httprequest:

  • fix the Content-Length problem when modifying the Body

in_dnsquery:out:

  • forcefakedns
  • system

brook module:

  • iosapponmac
  • cidrcontainsip
  • parseurl
  • parsequery
  • map2query
  • bytes2ints
  • ints2bytes
  • bytescompare
  • bytescontains
  • byteshasprefix
  • byteshassuffix
  • bytesindex
  • byteslastindex
  • bytesreplace
  • pathescape
  • pathunescape
  • queryescape
  • queryunescape
  • hexdecode
  • hexencode

v20230101

01 Jan 02:48
Compare
Choose a tag to compare

CLI

  • brook echoserver: new command
  • brook echoclient: new command
  • brook markdown renamed to brook mdpage

Documentation

GUI

  • Linux GUI Client
  • Edge is no longer needed. Temporarily no System tray.
  • Desktop tun mode supports bypass on
  • Hosts: like /etc/hosts
  • Log View Plus: filter condition
  • MITM Log View: HTTP/HTTPS request and response
  • Programmable: Everything is possible

GUI Documentation


CLI

  • brook echoserver: 新命令
  • brook echoclient: 新命令
  • brook markdown 重命名 brook mdpage

文档

GUI

  • Linux 图形客户端
  • Edge 不再需要. 暂无 System tray.
  • 桌面 tun 模式支持 bypass 开启
  • Hosts, 就像 /etc/hosts
  • Log View Plus: 过滤条件
  • MITM Log View: HTTP/HTTPS 请求和响应日志
  • 可编程: 一切皆有可能

GUI 文档

v20221212

03 Nov 07:15
4a6f22f
Compare
Choose a tag to compare

CLI

  • brook dns renamed to brook dnsserveroverbrook
  • brook dnsserver new subcommand
  • brook completion new subcommand
  • brook markdown new subcommand
  • brook manpage new subcommand

GUI

  • Capture me new feature: You can try to see if your packet capture tool can capture this standard HTTP request
  • MITM tentatively changed to strict address matching mode, and supports HTTP/2.0
  • When fake dns off, let it doesn't touch domain in dns
  • Will reset local cache
  • And other small changes
  • Removed from Google Play
  • Because of the seven continents and eight oceans, the rules required by different regions are not applicable. The default bypass and block and MITM rules are just samples, please change them according to your own situation

Everyone, every region, every time, you should follow this channel with the news here as the first news. Unless you are an adventurer.

Documentation

ZH

命令行

  • brook dns 重命名为 brook dnsserveroverbrook
  • brook dnsserver 新子命令
  • brook completion 新的子命令
  • brook markdown 新的子命令
  • brook manpage 新的子命令

图形客户端

  • Capture me 新功能: 你可以试试你的抓包工具能不能捕获这个标准 HTTP 请求
  • MITM 暂定改为严格匹配模式,并支持 HTTP/2.0
  • 当 fake dns 关闭时,让它不触碰 dns 中的域名
  • 将重置本地缓存
  • 和其他小改动
  • 从 Google Play 中移除
  • 因为七大洲,八大洋,不同地区需要的规则不通。默认的 bypass 和 block 以及 MITM 规则只是示例,请根据自己的情况进行更改,参考这个

每个人,每个地区,每个时间,你应该关注此 频道 以这里的消息作为第一消息。除非你是冒险者。

文档

v20221010

30 Sep 03:35
Compare
Choose a tag to compare

CLI

  • brook connect:
    --dialSocks5
    --dialSocks5Username
    --dialSocks5Password

  • brook testsocks5

  • brook testbrook

GUI

  • Geo IP
  • Google Play

Please

  • Prefer dual-stack network, both server and client. 请偏爱双栈网络环境,服务端和客户端