Brook 搭配 Cloudfare Warp 访问 ChatGPT

https://www.txthinking.com/talks/
Updated at: 2023-05-19

背景

因为 OpenAI 不仅 ban 掉了中国大陆的 IP,还 ban 掉了大部分 VPS 提供商的 IP。这篇文章的目的找个可用的落地 IP 来访问 ChatGPT。

服务端

以下在全新的 Ubuntu 22.04 上操作并验证可行

添加源

curl https://pkg.cloudflareclient.com/pubkey.gpg | sudo gpg --yes --dearmor --output /usr/share/keyrings/cloudflare-warp-archive-keyring.gpg
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/cloudflare-warp-archive-keyring.gpg] https://pkg.cloudflareclient.com/ $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/cloudflare-client.list
apt update

安装 warp-cli

apt install cloudflare-warp

注册 warp

warp-cli register

启动 warp

warp-cli set-mode proxy
warp-cli set-proxy-port 1080
warp-cli connect
warp-cli status

到这里,你应该有了一个socks5, 127.0.0.1:1080

安装 brook

bash <(curl https://bash.ooo/nami.sh)
nami install joker brook

测试下 warp 创建出来的 socks5

brook testsocks5 -s 127.0.0.1:1080
Testing TCP: query http3.ooo A on 8.8.8.8:53
2023/05/13 09:17:14 Sent NegotiationRequest: 0x5 0x1 []byte{0x0}
2023/05/13 09:17:14 Got NegotiationReply: 0x5 0x0
2023/05/13 09:17:14 Sent Request: 0x5 0x1 0x0 0x1 []byte{0x8, 0x8, 0x8, 0x8} []byte{0x0, 0x35}
2023/05/13 09:17:14 Got Reply: 0x5 0x0 0x0 0x1 []byte{0x7f, 0x0, 0x0, 0x1} []byte{0x0, 0x0}
TCP: OK
Testing UDP: query http3.ooo A on 8.8.8.8:53
2023/05/13 09:17:14 Sent NegotiationRequest: 0x5 0x1 []byte{0x0}
2023/05/13 09:17:14 Got NegotiationReply: 0x5 0x0
2023/05/13 09:17:14 Sent Request: 0x5 0x3 0x0 0x1 []byte{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0} []byte{0x0, 0x0}
2023/05/13 09:17:14 unexpected EOF

可以看出,这个 socks5 只支持 TCP,不能处理 UDP

创建 brook server, 转发到 warp 的 socks5

joker brook --dialWithSocks5 127.0.0.1:1080 server --listen :9999 --password hello

客户端

在客户端填入 brook server 信息即可。

注意:上文提到因为 warp 的 socks5 只支持 TCP,不支持处理 UDP。只能将 UDP 直连或阻断。

text := import("text")

f := func(){
    if in_dnsquery {
        // block secure dns
        if in_dnsquery.domain == "dns.google" {
            return {block: true}
        }
        // block ipv6, if your server or local does not support ipv6
        if in_dnsquery.type == "AAAA" {
            return {block: true}
        }
    }
    if in_address {
        m := in_address
        if m.ipaddress {
            // block secure dns
            if 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 }
            }
            // block or bypass udp
            if m.network == "udp" {
                return { bypass: true } // or { block : true }
            }
        }
        if m.domainaddress {
            // block secure dns
            if text.has_prefix(m.domainaddress, "dns.google:") {
                return { "block": true }
            }
            // block udp
            if m.network == "udp" {
                return { block: true }
            }
        }
    }
}
out := f()

脚本地址

Shiliew 客户

当然如果你是ShiliewBrook Plus 用户,也可以在 Telegram 群组里免费使用。