一行代码,直连 V2EX - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
t00t00
V2EX    分享创造

一行代码,直连 V2EX

  •  
  •   t00t00 78 天前 3317 次点击
    这是一个创建于 78 天前的主题,其中的信息可能已经有所发展或是发生改变。

    TL;DR

    仓库:kazutoiris/chromium-no-sni

    测试地址:cdn-cgi/trace

    ** DNS 污染自行处理,SmartDNS/DoH/DoT 都行。 **

    (图片放不上就算了)

    fl=... h=www.v2ex.com ip=... ts=... visit_scheme=https uag=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36 colo=LAX sliver=010-tier1 http=http/1.1 loc=CN tls=TLSv1.3 sni=plaintext warp=off gateway=off rbi=off kex=X25519 

    原理

    对于 SNI 字段,RFC6066 有明确规定。 但是,部分软件和云服务对于 SNI 字段的解析存在一些“怪癖”:即使 不指定存在格式错误 时,仍能够正确对 TLS 加密流量进行分流。

    下载

    基于 Chromium 138 进行修改,只改动了一行代码

    仓库中有 5 种变种,可以用来测试自家的云服务是否存在一些“怪癖”。 提供了 Windows 下 32 位、64 位、ARM 版本的预编译安装包/便携包。

    仓库:kazutoiris/chromium-no-sni

    BTW:记得 Star 和 Fork ,失效不补。

    28 条回复    2025-07-28 20:52:36 +08:00
    mzl980425
        1
    mzl980425  
       78 天前
    你在 V 站给一群能正常访问 V 站的人推广直连 V 站的工具?
    moefishtang
        2
    moefishtang  
       78 天前 via Android
    @mzl980425 梯子挂了上不了网的时候还是有需求的,多个备用方案也好
    t00t00
        3
    t00t00  
    OP
       78 天前
    @mzl980425 思路打开,相同的原理还能够复活节点。
    t00t00
        4
    t00t00  
    OP
       78 天前   1
    @moefishtang 当 **几乎所有** 需要的网站都能够直连的时候,也许成了备用方案的是梯子。
    ixinshang
        5
    ixinshang  
       78 天前
    如果想添加 github docker 这类,应该怎么修改呢
    t00t00
        6
    t00t00  
    OP
       78 天前
    @ixinshang 开箱即用
    arrow629
        7
    arrow629  
       78 天前
    你这个方案不如 https://github.com/SpaceTimee/Sheas-Cealer 其实 Chromium 启动时命令行参数就可以配置 SNI ,有人研究过 https://nicebowl.fun/24_8
    fugu37
        8
    fugu37  
       78 天前
    V2 开了 ESNI 和 HTTP/3 ,支持任何一个都能直连 V 站
    t00t00
        9
    t00t00  
    OP
       78 天前
    @arrow629 如果自己看过以前所有的方案,就会发现以前的都是基于同子域名伪造,不仅麻烦,还不能确保证书完整性。而这个方案巧妙就巧妙在这里:

    1. 通杀所有 Cloudflare 、Cloudfront 、Akamai 的 CDN 托管。(这个适用范围有多大我就不说了)
    2. 握手证书是权威的,不需要自签。(也就是说握手证书和外网访问的指纹、公钥都是一致的,并没有关闭证书校验)
    t00t00
        10
    t00t00  
    OP
       78 天前
    @fugu37 很明显,ESNI 在阻断列表上; HTTP/3 基于 UDP ,即使不阻断也会被 QoS 。现在通过 HTTP1.1/2 就足够了,而且证书并没有被破坏。
    dhb233
        11
    dhb233  
       78 天前
    没明白不提供 SNI 的情况下怎么做到安全校验的?如果 server 是独立 IP ,只使用固定证书,那是可以校验。如果不是这样,只是校验证书的合法性,那要么是信任部分 SNI ,要么还是会有被劫持的风险。信任部分 SNI 比较麻烦
    t00t00
        12
    t00t00  
    OP
       78 天前
    @dhb233 部分软件和云服务对于 SNI 字段的解析存在一些“怪癖”,即使 **不指定** 或 **存在格式错误** 时,仍能够正确对 TLS 加密流量进行分流(也能够返回正确证书并完成握手)。所以这个“怪癖”相当有意思。
    dhb233
        13
    dhb233  
       78 天前
    @t00t00 #12 那不就是独立 IP 的情况吗,如果 1.1.1.1 对应的服务器只有一个 v2ex.com 的时候,那不管是什么 SNI 都回 v2ex.com 的证书。如果 1.1.1.1 同时有多个域名,比如 v2ex.com v3ex.com v4ex.com 的情况下,服务器只能返回一个证书,你怎么能确定就是你要访问的域名?除非你访问 v4ex.com 的时候,也信任 v2ex.com 的证书
    t00t00
        14
    t00t00  
    OP
       78 天前
    @dhb233 有没有可能,这句话有两个要点 **不指定** 或 **存在格式错误** 。

    但是重点在后面:**存在格式错误**。
    dhb233
        15
    dhb233  
       78 天前
    @t00t00 这说了和没说一样,另外 SNI 哪有什么格式要求?
    t00t00
        16
    t00t00  
    OP
       78 天前
    @dhb233 怎么会没有规定?正文里 RFC6066 不是写了?
    t00t00
        17
    t00t00  
    OP
       78 天前
    @dhb233 而且 PoC 都已经放出来了,可以自己试试。
    Jesmora
        18
    Jesmora  
       78 天前
    v2 不是一个境外 doh 就能解决了吗,何必搞这么麻烦
    arrow629
        19
    arrow629  
       77 天前 via Android
    @t00t00 但你这个方案要对 chromium 打 patch ,这成本不低啊。 而且无 sni 的情况下,服务器只能返回默认证书,不一定是自己想要的。 我不大明白你是怎么做到的,而且据我所知 cloudflare 免费版分配的 ip 是一定要有 sni 的情况下才能返回正确的证书
    t00t00
        20
    t00t00  
    OP
       77 天前
    @arrow629 就只改动一行代码,而且编译分发全部走的是 GitHub Action ,就算是后期需要随主线更新适配,成本相对来说还是比较低的。

    而且,正文有两个要点 **不指定** 或 **存在格式错误** 。

    但是重点在后面:**存在格式错误**。有些服务器认为错误就是错误,一遇到错误就不高兴罢工了;而有些服务器认为请求好不容易过来了,有错误给它修一下,当正常的来处理就好了。
    t00t00
        21
    t00t00  
    OP
       77 天前
    @Jesmora 有没有一种可能,不止 v2 ?
    pagxir
        22
    pagxir  
       77 天前 via Android
    域名前置那一套?
    t00t00
        23
    t00t00  
    OP
       77 天前
    @pagxir 域名前置需要云控规则,甚至得把证书校验关了。这些怎么说一行代码也做不到吧。
    realpg
        24
    realpg  
    PRO
       74 天前
    在 sni 的域名后面发送额外的点?
    tdb11039gg
        25
    tdb11039gg  
       74 天前
    没懂,是不用梯子就能访问吗,试了访问不了呢
    t00t00
        26
    t00t00  
    OP
       73 天前   1
    @realpg bingo
    t00t00
        27
    t00t00  
    OP
       73 天前
    @tdb11039gg DNS 污染需要自己处理,比如使用内置的 DoH 功能进行解析。可用的干净 DoH 服务器现在有挺多的。
    realpg
        28
    realpg  
    PRO
       73 天前
    @t00t00 #26
    这思路真棒!
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3504 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 05:07 PVG 13:07 LAX 22:07 JFK 01:07
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86