Brook
Shiliew
Cheap
Zhi
Meeting
Nan
mitmproxy client
Network Activity Monitor
iOS Old App Downloader
SSH Terminal
Subtitle
菜根谭
Socks5 Configurator
IPvBar
File Link
Markdown Editor
IP
AI
nami
joker
brook
ipio
nico
z
zoro
hancock
mad
httpserver
google hosts
Updated at: 2026-01-01
增加两个属性
| Key | Type | Description | Example |
|---|---|---|---|
| connectivity | string | When connecting, the client remembers the current network connection type of the device and passes this value to the script. ethernet/mobile/wifi/other/none |
|
| wifiname | string | When connecting, the client remembers the current wifi name of the device and passes this value to the script. |
增加两个属性
| Key | Type | Description | Example |
|---|---|---|---|
| connectivity | string | When connecting, the client remembers the current network connection type of the device and passes this value to the script. ethernet/mobile/wifi/other/none |
|
| wifiname | string | When connecting, the client remembers the current wifi name of the device and passes this value to the script. |
支持向客户端下发脚本, Brook 服务提供者需要提供一个下发 Script 的 URL.
当用户在客户端输入导入 brook links 的 URL 时, 此 URL 上会包含用户标识 token, 比如: https://hello.com/import?token=xxx
假设服务提供者提供的下发 Script 的 URL 是 https://hello.com/script, 那么客户端会带上与上面相同的用户标识 token, 即会请求 ``https://hello.com/script?token=xxx` 获取脚本. 服务提供者可以决定根据不同的用户下发不同的 Script, 当然也可以给所有的用户下发相同的 Script.
如何工作:
如何编写下发的 Script 请阅读文档: https://www.txthinking.com/brook.html - 文档 - Brook Client
举例:
modules := []
// 防止 Fake DNS 不生效
modules = append(modules, {
dnsquery: func(m) {
if m.domain == "dns.google" {
return { block: true }
}
},
address: func(m) {
if m.ipaddress && (m.ipaddress == "8.8.8.8:853" || m.ipaddress == "8.8.8.8:443" || m.ipaddress == "8.8.4.4:853" || m.ipaddress == "8.8.4.4:443" || m.ipaddress == "[2001:4860:4860::8888]:853" || m.ipaddress == "[2001:4860:4860::8888]:443" || m.ipaddress == "[2001:4860:4860::8844]:853" || m.ipaddress == "[2001:4860:4860::8844]:443") {
return { block: true }
}
if m.domainaddress {
text := import("text")
if text.has_prefix(m.domainaddress, "dns.google:") {
return { block: true }
}
}
}
})
// Bypass Apple, 因为苹果推送服务不允许使用代理.
modules = append(modules, {
dnsquery: func(m) {
text := import("text")
l := [
"apple.com",
"icloud.com",
"cdn-apple.com",
"mzstatic.com",
"entrust.net",
"digicert.com",
"verisign.net",
"apple",
"push-apple.com.akadns.net",
"itunes-apple.com.akadns.net",
"cdn-apple.com.akadns.net",
"ks-cdn.com",
"ksyuncdn.com",
"cdn-apple.com.edgekey.net",
"e2885.e9.akamaiedge.net",
"apple.com.edgekey.net",
"e2490.dscb.akamaiedge.net",
"idms-apple.com.akadns.net",
"apple.com.edgekey.net.globalredir.akadns.net",
"e6858.dscx.akamaiedge.net",
"ioshost.qtlcdn.com"
]
for v in l {
if m.domain == v || text.has_suffix(m.domain, "."+v) {
return { bypass: true }
}
}
},
address: func(m) {
if m.ipaddress {
brook := import("brook")
r := brook.splithostport(m.ipaddress)
if is_error(r) {
return r
}
l := [
"17.0.0.0/8",
"103.81.148.0/22",
"103.81.148.0/24",
"103.81.149.0/24",
"2620:149:a44::/48",
"2403:300:a42::/48",
"2403:300:a51::/48",
"2a01:b740:a42::/48"
]
for v in l {
if brook.cidrcontainsip(v, r.host) {
return { bypass: true }
}
}
}
}
})
// Ignore fake DNS for instagram
modules = append(modules, {
dnsquery: func(m) {
text := import("text")
f := func(domain, l){
ss := text.split(text.to_lower(domain), ".")
s := ""
for i := len(ss) - 1; i >= 0; i-- {
if s == "" {
s = ss[i]
} else {
s = ss[i] + "." + s
}
if l[s] {
return { system: true }
}
}
}
l := {
"aboutfacebook.com": true,
"accessfacebookfromschool.com": true,
"acebooik.com": true,
"acebook.com": true,
"acheter-followers-instagram.com": true,
"acheterdesfollowersinstagram.com": true,
"acheterfollowersinstagram.com": true,
"advancediddetection.com": true,
"askfacebook.net": true,
"askfacebook.org": true,
"atdmt2.com": true,
"atlasdmt.com": true,
"atlasonepoint.com": true,
"bookstagram.com": true,
"buyingfacebooklikes.com": true,
"careersatfb.com": true,
"carstagram.com": true,
"cdninstagram.com": true,
"celebgramme.com": true,
"chickstagram.com": true,
"china-facebook.com": true,
"click-url.com": true,
"como-hackearfacebook.com": true,
"crowdtangle.com": true,
"dacebook.com": true,
"dlfacebook.com": true,
"dotfacebook.com": true,
"dotfacebook.net": true,
"expresswifi.com": true,
"faacebok.com": true,
"faacebook.com": true,
"faasbook.com": true,
"facbebook.com": true,
"facbeok.com": true,
"facboo.com": true,
"facbook.com": true,
"facbool.com": true,
"facboox.com": true,
"faccebook.com": true,
"faccebookk.com": true,
"facdbook.com": true,
"facdebook.com": true,
"face-book.com": true,
"faceabook.com": true,
"facebboc.com": true,
"facebbook.com": true,
"facebboook.com": true,
"facebcook.com": true,
"facebdok.com": true,
"facebgook.com": true,
"facebhook.com": true,
"facebkkk.com": true,
"facebo-ok.com": true,
"faceboak.com": true,
"facebock.com": true,
"facebocke.com": true,
"facebof.com": true,
"faceboik.com": true,
"facebok.com": true,
"facebokbook.com": true,
"facebokc.com": true,
"facebokk.com": true,
"facebokok.com": true,
"faceboks.com": true,
"facebol.com": true,
"facebolk.com": true,
"facebomok.com": true,
"faceboo.com": true,
"facebooa.com": true,
"faceboob.com": true,
"faceboobok.com": true,
"facebooc.com": true,
"faceboock.com": true,
"facebood.com": true,
"facebooe.com": true,
"faceboof.com": true,
"facebooi.com": true,
"facebooik.com": true,
"facebooik.org": true,
"facebooj.com": true,
"facebook-corp.com": true,
"facebook-covid-19.com": true,
"facebook-ebook.com": true,
"facebook-forum.com": true,
"facebook-hardware.com": true,
"facebook-inc.com": true,
"facebook-login.com": true,
"facebook-newsroom.com": true,
"facebook-newsroom.org": true,
"facebook-pmdcenter.com": true,
"facebook-pmdcenter.net": true,
"facebook-pmdcenter.org": true,
"facebook-privacy.com": true,
"facebook-program.com": true,
"facebook-studio.com": true,
"facebook-support.org": true,
"facebook-texas-holdem.com": true,
"facebook-texas-holdem.net": true,
"facebook.br": true,
"facebook.ca": true,
"facebook.cc": true,
"facebook.com": true,
"facebook.design": true,
"facebook.hu": true,
"facebook.in": true,
"facebook.net": true,
"facebook.nl": true,
"facebook.org": true,
"facebook.se": true,
"facebook.shop": true,
"facebook.tv": true,
"facebook.us": true,
"facebook.wang": true,
"facebook123.org": true,
"facebook30.com": true,
"facebook30.net": true,
"facebook30.org": true,
"facebook4business.com": true,
"facebookads.com": true,
"facebookadvertisingsecrets.com": true,
"facebookatschool.com": true,
"facebookawards.com": true,
"facebookblueprint.net": true,
"facebookbrand.com": true,
"facebookbrand.net": true,
"facebookcanadianelectionintegrityinitiative.com": true,
"facebookcareer.com": true,
"facebookcheats.com": true,
"facebookck.com": true,
"facebookclub.com": true,
"facebookcom.com": true,
"facebookconsultant.org": true,
"facebookcoronavirus.com": true,
"facebookcovers.org": true,
"facebookcredits.info": true,
"facebookdating.net": true,
"facebookdusexe.org": true,
"facebookemail.com": true,
"facebookenespanol.com": true,
"facebookexchange.com": true,
"facebookexchange.net": true,
"facebookfacebook.com": true,
"facebookflow.com": true,
"facebookgames.com": true,
"facebookgraphsearch.com": true,
"facebookgraphsearch.info": true,
"facebookgroups.com": true,
"facebookhome.cc": true,
"facebookhome.com": true,
"facebookhome.info": true,
"facebookhub.com": true,
"facebooki.com": true,
"facebookinc.com": true,
"facebookland.com": true,
"facebooklikeexchange.com": true,
"facebooklive.com": true,
"facebooklivestaging.net": true,
"facebooklivestaging.org": true,
"facebooklogin.com": true,
"facebooklogin.info": true,
"facebookloginhelp.net": true,
"facebooklogs.com": true,
"facebookmail.com": true,
"facebookmail.tv": true,
"facebookmanager.info": true,
"facebookmarketing.info": true,
"facebookmarketingpartner.com": true,
"facebookmarketingpartners.com": true,
"facebookmobile.com": true,
"facebookmsn.com": true,
"facebooknews.com": true,
"facebooknfl.com": true,
"facebooknude.com": true,
"facebookofsex.com": true,
"facebookook.com": true,
"facebookpaper.com": true,
"facebookpay.com": true,
"facebookphonenumber.net": true,
"facebookphoto.com": true,
"facebookphotos.com": true,
"facebookpmdcenter.com": true
}
r := f(m.domain, l)
if r != undefined {
return r
}
l = {
"facebookpoke.net": true,
"facebookpoke.org": true,
"facebookpoker.info": true,
"facebookpokerchips.info": true,
"facebookporn.net": true,
"facebookporn.org": true,
"facebookporno.net": true,
"facebookportal.com": true,
"facebooks.com": true,
"facebooksafety.com": true,
"facebooksecurity.net": true,
"facebookshop.com": true,
"facebooksignup.net": true,
"facebooksite.net": true,
"facebookstories.com": true,
"facebookstudios.net": true,
"facebookstudios.org": true,
"facebooksupplier.com": true,
"facebooksuppliers.com": true,
"facebookswagemea.com": true,
"facebookswagstore.com": true,
"facebooksz.com": true,
"facebookthreads.net": true,
"facebooktv.net": true,
"facebooktv.org": true,
"facebookvacation.com": true,
"facebookw.com": true,
"facebookwork.com": true,
"facebookworld.com": true,
"facebool.com": true,
"facebool.info": true,
"facebooll.com": true,
"faceboom.com": true,
"faceboon.com": true,
"faceboonk.com": true,
"faceboooik.com": true,
"faceboook.com": true,
"faceboop.com": true,
"faceboot.com": true,
"faceboox.com": true,
"facebopk.com": true,
"facebpook.com": true,
"facebuk.com": true,
"facebuok.com": true,
"facebvook.com": true,
"facebyook.com": true,
"facebzook.com": true,
"facecbgook.com": true,
"facecbook.com": true,
"facecbook.org": true,
"facecook.com": true,
"facecook.org": true,
"facedbook.com": true,
"faceebok.com": true,
"faceebook.com": true,
"faceebot.com": true,
"facegbok.com": true,
"facegbook.com": true,
"faceobk.com": true,
"faceobok.com": true,
"faceobook.com": true,
"faceook.com": true,
"facerbooik.com": true,
"facerbook.com": true,
"facesbooc.com": true,
"facesounds.com": true,
"facetook.com": true,
"facevbook.com": true,
"facewbook.co": true,
"facewook.com": true,
"facfacebook.com": true,
"facfebook.com": true,
"fackebook.com": true,
"facnbook.com": true,
"facrbook.com": true,
"facvebook.com": true,
"facwebook.com": true,
"facxebook.com": true,
"fadebook.com": true,
"faebok.com": true,
"faebook.com": true,
"faebookc.com": true,
"faeboook.com": true,
"faecebok.com": true,
"faesebook.com": true,
"fafacebook.com": true,
"faicbooc.com": true,
"fasebokk.com": true,
"fasebook.com": true,
"faseboox.com": true,
"favebook.com": true,
"faycbok.com": true,
"fb.careers": true,
"fb.com": true,
"fb.gg": true,
"fb.me": true,
"fb.watch": true,
"fbacebook.com": true,
"fbbmarket.com": true,
"fbboostyourbusiness.com": true,
"fbcdn-a.akamaihd.net": true,
"fbcdn.com": true,
"fbcdn.net": true,
"fbfeedback.com": true,
"fbhome.com": true,
"fbidb.io": true,
"fbinc.com": true,
"fbinnovation.com": true,
"fbmarketing.com": true,
"fbreg.com": true,
"fbrpms.com": true,
"fbsbx.com": true,
"fbsbx.net": true,
"fbsupport-covid.net": true,
"fbthirdpartypixel.com": true,
"fbthirdpartypixel.net": true,
"fbthirdpartypixel.org": true,
"fburl.com": true,
"fbwat.ch": true,
"fbworkmail.com": true,
"fcacebook.com": true,
"fcaebook.com": true,
"fcebook.com": true,
"fcebookk.com": true,
"fcfacebook.com": true,
"fdacebook.info": true,
"feacboo.com": true,
"feacbook.com": true,
"feacbooke.com": true,
"feacebook.com": true,
"fecbbok.com": true,
"fecbooc.com": true,
"fecbook.com": true,
"feceboock.com": true,
"fecebook.net": true,
"feceboox.com": true,
"fececbook.com": true,
"feook.com": true,
"ferabook.com": true,
"fescebook.com": true,
"fesebook.com": true,
"ffacebook.com": true,
"fgacebook.com": true,
"ficeboock.com": true,
"fmcebook.com": true,
"fnacebook.com": true,
"fosebook.com": true,
"fpacebook.com": true,
"fqcebook.com": true,
"fracebook.com": true,
"freeb.com": true,
"freebasics.com": true,
"freebasics.net": true,
"freebs.com": true,
"freefacebook.com": true,
"freefacebook.net": true,
"freefacebookads.net": true,
"freefblikes.com": true,
"freindfeed.com": true,
"friendbook.info": true,
"friendfed.com": true,
"friendfeed-api.com": true,
"friendfeed-media.com": true,
"friendfeed.com": true,
"friendfeedmedia.com": true,
"fsacebok.com": true,
"fscebook.com": true,
"fundraisingwithfacebook.com": true,
"funnyfacebook.org": true,
"futureofbusinesssurvey.org": true,
"gacebook.com": true,
"gameroom.com": true,
"gfacecbook.com": true,
"groups.com": true,
"hackerfacebook.com": true,
"hackfacebook.com": true,
"hackfacebookid.com": true,
"hifacebook.info": true,
"howtohackfacebook-account.com": true,
"hsfacebook.com": true,
"httpfacebook.com": true,
"httpsfacebook.com": true,
"httpwwwfacebook.com": true,
"i.org": true,
"iachat-followers-instagram.com": true,
"ig.me": true,
"igcdn.com": true,
"igsonar.com": true,
"igtv.com": true,
"imstagram.com": true,
"imtagram.com": true,
"instaadder.com": true,
"instachecker.com": true,
"instafallow.com": true,
"instafollower.com": true,
"instagainer.com": true,
"instagda.com": true,
"instagify.com": true,
"instagmania.com": true,
"instagor.com": true
}
r = f(m.domain, l)
if r != undefined {
return r
}
l = {
"instagram-brand.com": true,
"instagram-engineering.com": true,
"instagram-help.com": true,
"instagram-press.com": true,
"instagram-press.net": true,
"instagram.com": true,
"instagramci.com": true,
"instagramcn.com": true,
"instagramdi.com": true,
"instagramhashtags.net": true,
"instagramhilecim.com": true,
"instagramhilesi.org": true,
"instagramium.com": true,
"instagramizlenme.com": true,
"instagramkusu.com": true,
"instagramlogin.com": true,
"instagramm.com": true,
"instagramn.com": true,
"instagrampartners.com": true,
"instagramphoto.com": true,
"instagramq.com": true,
"instagramsepeti.com": true,
"instagramtakipcisatinal.net": true,
"instagramtakiphilesi.com": true,
"instagramtips.com": true,
"instagramtr.com": true,
"instagran.com": true,
"instagranm.com": true,
"instagrem.com": true,
"instagrm.com": true,
"instagtram.com": true,
"instagy.com": true,
"instamgram.com": true,
"instangram.com": true,
"instanttelegram.com": true,
"instaplayer.net": true,
"instastyle.tv": true,
"instgram.com": true,
"intagram.com": true,
"intagrm.com": true,
"internet.org": true,
"intgram.com": true,
"kingstagram.com": true,
"klik.me": true,
"liverail.com": true,
"liverail.tv": true,
"lnstagram-help.com": true,
"login-account.net": true,
"markzuckerberg.com": true,
"messenger.com": true,
"midentsolutions.com": true,
"mobilefacebook.com": true,
"moneywithfacebook.com": true,
"myfbfans.com": true,
"newsfeed.com": true,
"nextstop.com": true,
"oninstagram.com": true,
"online-deals.net": true,
"online-instagram.com": true,
"onlineinstagram.com": true,
"opencreate.org": true,
"reachtheworldonfacebook.com": true,
"redkix.com": true,
"rocksdb.org": true,
"shopfacebook.com": true,
"sportsfacebook.com": true,
"sportstream.com": true,
"supportfacebook.com": true,
"terragraph.com": true,
"tfbnw.net": true,
"thefacebook.com": true,
"thefacebook.net": true,
"thefind.com": true,
"theinstagramhack.com": true,
"toplayerserver.com": true,
"viewpointsfromfacebook.com": true,
"web-instagram.net": true,
"whatsapp.com": true,
"whatsapp.net": true,
"whyfacebook.com": true,
"workplace.com": true,
"workplaceusecases.com": true,
"worldhack.com": true,
"www-facebook.com": true,
"wwwfacebok.com": true,
"wwwfacebook.com": true,
"wwwinstagram.com": true,
"wwwmfacebook.com": true,
"zuckerberg.com": true,
"zuckerberg.net": true
}
r = f(m.domain, l)
if r != undefined {
return r
}
}
})
// Ignore fake DNS for ChatGPT Advanced Voice
modules = append(modules, {
dnsquery: func(m) {
text := import("text")
l := [
"livekit.cloud"
]
for v in l {
if m.domain == v || text.has_suffix(m.domain, "."+v) {
return { system: true }
}
}
}
})
f := func() {
if in_brooklinks {
for i:=0; i<len(modules); i++{
if modules[i]["brooklinks"] {
r := modules[i]["brooklinks"](in_brooklinks)
if is_error(r) || is_map(r) {
return r
}
}
}
return
}
if in_dnsquery {
for i:=0; i<len(modules); i++{
if modules[i]["dnsquery"] {
r := modules[i]["dnsquery"](in_dnsquery)
if is_error(r) || is_map(r) {
return r
}
}
}
return
}
if in_address {
for i:=0; i<len(modules); i++{
if modules[i]["address"] {
r := modules[i]["address"](in_address)
if is_error(r) || is_map(r) {
return r
}
}
}
return
}
if in_httprequest && !in_httpresponse {
for i:=0; i<len(modules); i++{
if modules[i]["httprequest"] {
r := modules[i]["httprequest"](in_httprequest)
if is_error(r) || is_map(r) {
return r
}
}
}
return in_httprequest
}
if in_httprequest && in_httpresponse {
for i:=0; i<len(modules); i++{
if modules[i]["httpresponse"] {
r := modules[i]["httpresponse"](in_httprequest, in_httpresponse)
if is_error(r) || is_map(r) {
return r
}
}
}
return in_httpresponse
}
}
out := f()