折腾啥

  1. 从 0 搭建一个 AnyTLS 节点(Caddy 分流, 自动维护证书)- 使用 Caddy 通配符证书, mholt/caddy-l4 sni 分流- AnyTLS 不开 TLS, 靠 Caddy 自动维护证书▎mise官方文档curl

    从 0 搭建一个 AnyTLS 节点(Caddy 分流, 自动维护证书)

    - 使用 Caddy 通配符证书, mholt/caddy-l4 sni 分流

    - AnyTLS 不开 TLS, 靠 Caddy 自动维护证书

    ▎mise

    官方文档

    curl https://mise.run | sh

    echo 'eval "$(~/.local/bin/mise activate bash)"' >> ~/.bashrc

    fish:
    echo '~/.local/bin/mise activate fish | source' >> ~/.config/fish/config.fish

    重启你的 shell 会话, 安装 go
    mise use -g go


    ▎caddy

    caddy 安装: 官方文档

    xcaddy 安装:
    go install github.com/caddyserver/xcaddy/cmd/xcaddy@latest

    mholt/caddy-l4(基于 SNI 转发) 安装:
    补充一点 如果想用最新的特性 可以用 xcaddy build master 但是可能也有新鲜的 bug 🐶
    xcaddy build latest --with github.com/mholt/caddy-l4 --with github.com/caddy-dns/cloudflare --output /usr/bin/caddy

    mholt/caddy-l4 文档

    caddy 配置(使用通配符证书, 需要配置 CLOUDFLARE_API_TOKEN )
    /etc/caddy/Caddyfile
    {
    log {
    output stdout
    format console
    level INFO
    }

    servers :443 {
    listener_wrappers {
    layer4 {
    @anytls tls sni a.foo.com
    route @anytls {
    tls
    proxy tcp/127.0.0.1:23556
    }
    }
    tls
    }
    }
    }

    # this block makes Caddy obtain a wildcard TLS certificate
    *.foo.com {
    tls {
    issuer acme {
    email [email protected]
    dir https://acme.zerossl.com/v2/DV90
    dns cloudflare {env.CLOUDFLARE_API_TOKEN}
    }
    issuer acme {
    dir https://acme-v02.api.letsencrypt.org/directory
    dns cloudflare {env.CLOUDFLARE_API_TOKEN}
    }
    }
    respond "Hello World!" 200
    }


    ▎服务端(对 我就喜欢用 mihomo 服务端)

    mihomo 官方文档中的 创建运行服务

    mihomo 配置(paddingScheme 是 vibe 的. 可以自定义. 顺便示范下如何 优先使用 IPv4. 其他配置省略, 自己加吧)
    proxies:
    - name: "direct"
    type: direct
    udp: true
    ip-version: ipv4-prefer
    listeners:
    - name: anytls-in
    type: anytls
    proxy: direct
    port: 23556
    listen: "127.0.0.1"
    users:
    root: "xYbpwdF9vIELWoLmdC"
    certificate: ""
    private-key: ""
    allow-insecure: true
    # https://github.com/anytls/anytls-go/blob/main/docs/protocol.md#cmdupdatepaddingscheme
    padding-scheme: |-
    stop=10
    0=38-72
    1=180-420,520-960
    2=1050-1320,c,260-620,c,760-1240,c,260-680,c,900-1350
    3=90-220,780-1180
    4=700-1240,c,220-520,c,900-1360
    5=160-420
    6=760-1280
    7=220-640
    8=900-1360
    9=180-480


    2. 客户端

    Sub-Store 内单行 JSON
    { "name": "节点名", "type": "anytls", "server": "服务器", "port": 443, "password": "xYbpwdF9vIELWoLmdC", "udp": true, "sni": "a.foo.com" } 

    或 Surge 格式
    节点名=anytls,服务器,443,password="xYbpwdF9vIELWoLmdC",sni=a.foo.com


    ▎相关阅读

    Caddy 使用 Redis 共享 storage

    相关: Sub-Store 自动设置服务端证书 SHA-256 指纹 自建节点证书相关说明

    GOST SNI 分流

    服务器合集 合集 群组 恰饭 联系推广

    #AnyTLS #mihomo #节点 #服务器 #协议 #Caddy

    • ❤️6
  2. 从 0 搭建一个 AnyTLS 节点🆕 更新: 可查看完整版 从 0 搭建一个 AnyTLS 节点(Caddy 分流, 自动维护证书)—- 官方 repo1. 服务端sing-box 和 mihomo 都支持了mihomo 官方文档中的 创建运行服务

    从 0 搭建一个 AnyTLS 节点

    🆕 更新: 可查看完整版 从 0 搭建一个 AnyTLS 节点(Caddy 分流, 自动维护证书)

    —-

    官方 repo

    1. 服务端

    sing-box 和 mihomo 都支持了
    mihomo 官方文档中的 创建运行服务

    自签证书与配置文件参考:

    openssl req -x509 -nodes -newkey ec:<(openssl ecparam -name prime256v1) -keyout /etc/mihomo/server.key -out /etc/mihomo/server.crt -subj "/CN=bing.com" -days 36500

    配置文件

    mixed-port: 65222 # HTTP(S) 和 SOCKS 代理混合端口
    tcp-concurrent: true # TCP 并发连接所有 IP, 将使用最快握手的 TCP
    allow-lan: false # 允许局域网连接
    ipv6: true # 开启 IPv6 总开关,关闭阻断所有 IPv6 链接和屏蔽 DNS 请求 AAAA 记录
    log-level: info # 日志等级 silent/error/warning/info/debug

    rules:
    - MATCH,DIRECT

    listeners:
    - name: anytls-in
    type: anytls
    port: 443
    listen: "::"
    users:
    974fdc85: 0cdfe9f1b663
    certificate: ./server.crt
    private-key: ./server.key
    # padding-scheme: "" # https://github.com/anytls/anytls-go/blob/main/docs/protocol.md#cmdupdatepaddingscheme


    2. 客户端

    Sub-Store 内单行 JSON

    { "name": "节点名", "type": "anytls", "server": "服务器", "port": 443, "password": "0cdfe9f1b663", "client-fingerprint": "chrome", "udp": true, "sni": "bing.com", "skip-cert-verify": true }



    节点名=anytls,服务器,443,password="0cdfe9f1b663",sni=bing.com,skip-cert-verify=true


    相关: Sub-Store 自动设置服务端证书 SHA-256 指纹 自建节点证书相关说明

    服务器合集 合集 群组 恰饭 联系推广

    #AnyTLS #mihomo #节点 #服务器 #协议

    • ❤️3
  3. macOS 剪贴板 App 对比嘎嘎细 还有一项是是否支持复杂对象的复制粘贴(例如复制粘贴 Figma 元素, Raycast 剪贴板不支持此功能) 在线表格 频道资源合集 恰饭推荐 群组 #Mac #macOS #App #剪贴板

    macOS 剪贴板 App 对比

    嘎嘎细

    还有一项是是否支持复杂对象的复制粘贴(例如复制粘贴 Figma 元素, Raycast 剪贴板不支持此功能)

    在线表格

    频道资源合集 恰饭推荐 群组

    #Mac #macOS #App #剪贴板

    • ❤️5
  4. Sub-Store 小课堂: 域名解析多 IP 裂变节点更新 如果你的真实需求是解析出不同运营商/不同地区的不同 IP, 请把 Sub-Store 内置的域名解析这一步操作换成脚本操作, 内容为:

    折腾啥
    Sub-Store 小课堂: 域名解析多 IP 裂变节点 群友的需求 使用了域名解析功能,如果有一个域名解析出来多个ip,如何让每个ip都变成一个节点 1. 如果你的真实需求是解析出不同运营商/不同地区的不同 IP 1.1 请把 Sub-Store 内置的域名解析这一步操作换成脚本操作, 内容为: const server = 'https://223.6.6.6/dns-query'; // DoH 阿里和腾讯的可能会触发限速 可以换别的试试 const edns = [{ name: '联通', ip:…
    Sub-Store 小课堂: 域名解析多 IP 裂变节点更新

    如果你的真实需求是解析出不同运营商/不同地区的不同 IP, 请把 Sub-Store 内置的域名解析这一步操作换成脚本操作, 内容为:
    const server = 'https://223.6.6.6/dns-query'; // DoH
    const edns = ['140.207.122.197', '183.47.126.35']; // 不同运营商/地区的 IP, 作为 EDNS Client Subnet (ECS)
    const type = 'A'; // A 或 AAAA

    if (!ProxyUtils.isIP($server.server)) {
    const cache = scriptResourceCache;
    const resolve = async (url, domain, type, edns) => {
    const id = `${url}:${domain}:${type}:${edns}`;
    const cached = cache.get(id);
    // 使用缓存
    if (cached) return cached;
    const res = await ProxyUtils.doh({
    url,
    domain,
    type,
    edns,
    });
    const { answers } = res;
    if (!Array.isArray(answers) || answers.length === 0) {
    throw new Error('No answers');
    }
    const result = answers
    .filter((i) => i?.type === type)
    .map((i) => i?.data)
    .filter((i) => i);
    if (result.length === 0) {
    throw new Error('No answers');
    }
    cache.set(id, result);
    return result;
    };
    const result = await Promise.all(
    edns.map((i) => resolve(server, $server.server, type, i)),
    );
    $server._resolved_ips = [...new Set(result.flat())];
    }

    然后接着用裂变脚本

    原消息

    Sub-Store 合集 频道资源合集 恰饭推荐 群组

    #SubStore #Sub-Store #小课堂 #tips #域名解析 #裂变 #IP #节点

    • 👍4
  5. Sub-Store 更新后端 2.16.53 前端 2.14.340- 修复 short-id 正则感谢群友 @MrHWooo 的反馈- 网络错误增加 emoji感谢群友 Wayne 的反馈 Sub-Store 合集 频道资源合集 恰饭推荐 群组 #SubStore #更新记录 #changlog #updates

    Sub-Store 更新

    后端 2.16.53 前端 2.14.340

    - 修复 short-id 正则

    感谢群友 @MrHWooo 的反馈

    - 网络错误增加 emoji

    感谢群友 Wayne 的反馈

    Sub-Store 合集 频道资源合集 恰饭推荐 群组

    #SubStore #更新记录 #changlog #updates

    • 🎉1
  6. GitHub Freshness🆕 重构了 这个默认的绿色还是有点哈人通过颜色高亮的方式,帮助你快速判断一个 GitHub 仓库是否在更新 greasyfork 频道资源合集 恰饭推荐 群组 #GitHub #UserScript

    GitHub Freshness

    🆕 重构了 这个默认的绿色还是有点哈人

    通过颜色高亮的方式,帮助你快速判断一个 GitHub 仓库是否在更新

    greasyfork

    频道资源合集 恰饭推荐 群组

    #GitHub #UserScript

    • ❤️4
  7. 抽奖预告: Reflix 兑换码晶晶表示 VPings 近期会开始重构支持哪吒探针 v1新 py 了几个 Reflix 兑换码. 今天太晚了. 明天开抽吧yomo 那边也在抽:

    抽奖预告: Reflix 兑换码

    晶晶表示 VPings 近期会开始重构支持哪吒探针 v1
    新 py 了几个 Reflix 兑换码. 今天太晚了. 明天开抽吧

    yomo 那边也在抽: https://t.me/yomoemby/104506

    频道资源合集 恰饭推荐 群组

    #抽奖预告 #Reflix

    • ❤️2
  8. Sub-Store 更新后端 2.16.52- 支持 Shadowrocket Shadowsocks 输入中的 Shadow TLS 参数但还是那句话, 不建议使用非标的 URI 输入- 修复 Shadowrocket 输出的 Shadow TLS感谢群友 @aithcc 的反馈 Sub-Store 合集 频道资源合集 恰饭推荐 群组 #SubStore #更新记录 #changlog #updates

    Sub-Store 更新

    后端 2.16.52

    - 支持 Shadowrocket Shadowsocks 输入中的 Shadow TLS 参数

    但还是那句话, 不建议使用非标的 URI 输入

    - 修复 Shadowrocket 输出的 Shadow TLS

    感谢群友 @aithcc 的反馈

    Sub-Store 合集 频道资源合集 恰饭推荐 群组

    #SubStore #更新记录 #changlog #updates

  9. Sub-Store 更新后端 2.16.50- 修复 Egern http 传输层- uuid 只辅助判断, 不直接过滤可在脚本中调用 ProxyUtils.isValidUUID($server.uuid)感谢群友 shica 和 Wayne 的反馈 Sub-Store 合集 频道资源合集 恰饭推荐 群组 #SubStore #更新记录 #changlog #updates

    Sub-Store 更新

    后端 2.16.50

    - 修复 Egern http 传输层

    - uuid 只辅助判断, 不直接过滤

    可在脚本中调用 ProxyUtils.isValidUUID($server.uuid)

    感谢群友 shica 和 Wayne 的反馈

    Sub-Store 合集 频道资源合集 恰饭推荐 群组

    #SubStore #更新记录 #changlog #updates

    • 🎉1
  10. Raycast 脚本: IP/域名查询写着玩. 感觉直接用纯文本输出又糙又快, 不搞别的了. 就写脚本先查询的 ip-api(所以可以输入域名)文件1. 需要安装 jq2. 可选: 在

    Raycast 脚本: IP/域名查询

    写着玩. 感觉直接用纯文本输出又糙又快, 不搞别的了. 就写脚本
    先查询的 ip-api(所以可以输入域名)

    文件

    1. 需要安装 jq
    2. 可选: 在 https://ipinfo.io 注册账号并获取 token, 将 token 填写到 IPINFO_TOKEN
    3. 可选: 安装 https://github.com/nxtrace/nali, 将 nali 路径填写到 NALI_PATH

    macOS 合集 频道资源合集 恰饭推荐 群组

    #macOS #苹果 #Surge #Raycast #脚本 #IP #域名 #查询 #ipapi #ipinfo

    • ❤️1
  11. https://fixupx.com/Blankwonder/status/1892251955780866095

  12. Forwarded from Lᴜᴄʏ 🫪
    https://chat.zju.edu.cn

    浙江大学消息,深度融合智能体“浙大先生”chat.zju.edu.cn 于 2 月 14 日正式发布,本地化部署 DeepSeek V3、R1 模型,基于 CARSI 资源共享平台,覆盖教学、科研、生活等全场景。
    浙大先生”将面向全国 829 所 CARSI 联盟高校开放共享,师生只需通过校园账号登录即可免费使用满血版 DeepSeek。
    浙江大学依托“西湖之光”算力联盟强大的算力资源,联合各界力量,逐步建设>1000Pflops (FP16)的本地算力资源;与联盟成员的数千 P 云端算力打通,拥有弹性混合的云端算力资源。


    Αdgurad 规则 屏蔽登陆框
    chat.zju.edu.cn###app > view.m-container > div.right-container:last-child > div.right-content:first-child > div.home-container > div.overlay:first-child


    随时失效,请勿滥用

    #DeepSeek

    • 😁14
    • 👍3
    • ❤️1
  13. Sub-Store 小课堂: 域名解析多 IP 裂变节点群友的需求使用了域名解析功能,如果有一个域名解析出来多个ip,如何让每个ip都变成一个节点1. 如果你的真实需求是解析出不同运营商/不同地区的不同 IP1.1 请把 Sub-Store 内置的域名解析这一步操作换成脚本操作, 内容为:

    Sub-Store 小课堂: 域名解析多 IP 裂变节点

    群友的需求
    使用了域名解析功能,如果有一个域名解析出来多个ip,如何让每个ip都变成一个节点


    1. 如果你的真实需求是解析出不同运营商/不同地区的不同 IP
    1.1 请把 Sub-Store 内置的域名解析这一步操作换成脚本操作, 内容为:
    const server = 'https://223.6.6.6/dns-query'; // DoH 阿里和腾讯的可能会触发限速 可以换别的试试
    const edns = [{ name: '联通', ip: '119.36.124.169' }, { name: '电信', ip: '116.207.181.162' }, { name: '移动', ip: '111.47.229.151' }]; // 不同运营商/地区的 IP, 作为 EDNS Client Subnet (ECS)
    const type = 'A'; // A 或 AAAA

    if (!ProxyUtils.isIP($server.server)) {
    const cache = scriptResourceCache;
    const resolve = async (url, domain, type, { name, ip }) => {
    const id = `${url}:${domain}:${type}:${name}:${ip}`;
    const cached = cache.get(id);
    // 使用缓存
    if (cached) return cached;
    const res = await ProxyUtils.doh({
    url,
    domain,
    type,
    edns: ip,
    });
    const { answers } = res;
    if (!Array.isArray(answers) || answers.length === 0) {
    throw new Error('No answers');
    }
    let result = answers
    .filter((i) => i?.type === type)
    .map((i) => i?.data)
    .filter((i) => i);
    if (result.length === 0) {
    throw new Error('No answers');
    }
    result = [...new Set(result.flat())];
    const data = {
    ip,
    name,
    result,
    }
    cache.set(id, data);
    return data;
    };

    $server._domain = $server.server
    $server._resolved_ips = await Promise.all(
    edns.map(({ip, name}) => resolve(server, $server.server, type, { ip, name })),
    );
    }

    1.2 然后接一个脚本操作
    function operator(proxies = []) {
    const list = []
    proxies.map((p = {}) => {
    let ips = p._resolved_ips
    if (Array.isArray(ips) && ips.length > 0) {
    ips.map(({ name, ip, result }) => {
    result.map((server, index) => {
    list.push({
    ...p,
    name: `${name} ${index + 1} - ${p.name}`,
    server,
    })
    })
    })
    // 取消下面几行的注释, 可以添加一个原始域名的节点
    // list.push({
    // ...p,
    // name: `原始 - ${p.name}`,
    // server: p._domain,
    // })
    } else {
    list.push(p)
    }
    })
    return list
    }


    2. 如果你的需求只是裂变, 先添加一个内置的域名解析, 然后添加一个脚本操作:
    function operator(proxies = []) {
    const list = []
    proxies.map((p = {}) => {
    let ips = p._resolved_ips
    if (Array.isArray(ips) && ips.length > 0) {
    ips.map((server, index) => {
    list.push({
    ...p,
    name: `${p.name}${index + 1}`,
    server,
    })
    })
    // 取消下面几行的注释, 可以添加一个原始域名的节点
    // list.push({
    // ...p,
    // name: `原始 - ${p.name}`,
    // server: p._domain,
    // })
    } else {
    list.push(p)
    }
    })
    return list
    }


    Sub-Store 合集 频道资源合集 恰饭推荐 群组

    #SubStore #Sub-Store #小课堂 #tips #域名解析 #裂变 #IP #节点

    • ❤️6
  14. Sub-Store 更新后端 2.16.49 前端 2.14.339- 支持 anytls 协议- 修复 Loon ip-mode感谢群友 超萌小正太 的反馈 Sub-Store 合集 频道资源合集 恰饭推荐 群组 #SubStore #更新记录 #changlog #updates

    Sub-Store 更新

    后端 2.16.49 前端 2.14.339

    - 支持 anytls 协议

    - 修复 Loon ip-mode

    感谢群友 超萌小正太 的反馈

    Sub-Store 合集 频道资源合集 恰饭推荐 群组

    #SubStore #更新记录 #changlog #updates

  15. AnyTLS

    AnyTLS
    一个试图专注于缓解 "TLS in TLS" 问题的 TLS 代理协议。anytls-go 是该协议的参考实现。

    灵活的分包和填充策略
    连接复用,降低代理延迟
    简洁的配置

    sing-box
    如果你喜欢使用 sing-box,可以尝试这个 fork。它包含了 anytls 协议的服务器和客户端。

    https://github.com/anytls/sing-box

    mihomo
    https://github.com/MetaCubeX/mihomo

    已合并至 Alpha 分支。它包含了 anytls 协议的服务器和客户端

    anytls/anytls-go

    频道资源合集 恰饭推荐 群组

    #AnyTLS #协议

    • 👍3