有没有这么一种代理工具,根据 HTTPS 的 SNI 信息,在 TCP 层面分流反代多个网站 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
villivateur
1.56D
V2EX    问与答

有没有这么一种代理工具,根据 HTTPS 的 SNI 信息,在 TCP 层面分流反代多个网站

  •  
  •   villivateur 2023-05-25 12:58:14 +08:00 2231 次点击
    这是一个创建于 901 天前的主题,其中的信息可能已经有所发展或是发生改变。

    需求是这样的:很多境外网站加载很慢,有一个舒服的办法是,买一个速度快的境外 VPS ,监听 80 和 443 端口,在 TCP 层面转发流量指需要代理的网站。本地改 hosts 把目标网站解析到自己买的 VPS 上。

    但这么做,每个网站就要一个 IP ,成本很高。

    有没有一种方法,在 VPS 上解析 SNI 信息,然后根据目标站点,反代不同的网站。然后本地把所有要访问的站点都解析到自己的 VPS 上。

    为什么不在 HTTP 层反代?因为没有目标网站的 TLS 证书。我也不想自签名。

    18 条回复    2023-05-25 17:12:16 +08:00
    hefish
        1
    hefish  
       2023-05-25 13:00:55 +08:00
    nginx haproxy 都能实现吧。。
    Puteulanus
        2
    Puteulanus  
       2023-05-25 13:04:13 +08:00   1
    SNIProxy
    villivateur
        3
    villivateur  
    OP
       2023-05-25 13:11:53 +08:00
    @Puteulanus 感谢,看了下确实满足需求
    shaoshuang
        4
    shaoshuang  
    PRO
       2023-05-25 13:12:06 +08:00
    这种需求。。。为啥还要搞这么复杂。。。难道不是任意一个梯子软件都能做么。。。
    villivateur
        5
    villivateur  
    OP
       2023-05-25 13:13:36 +08:00   1
    @shaoshuang 这么做,代理的思路是不一样的,在很多没办法装正向代理软件的时候,只能这么搞。
    lslqtz
        6
    lslqtz  
       2023-05-25 13:17:38 +08:00
    权限控制是一个问题.
    choury
        7
    choury  
       2023-05-25 13:34:55 +08:00 via Android
    有 sni 信息过不了墙,你搞到国外有什么用
    sujin190
        8
    sujin190  
       2023-05-25 13:37:57 +08:00   2
    python -m sevent.helpers @arproxy -p 80 -T none @arproxy -p 443 -T none

    一条命令行就可以,不但会解析 sni ,普通 http 还会解析 header 通过 HOST 字段提取域名,如果你还有上级代理得话也可以指定转发到上级代理来访问

    如果你已经有代理了话,其实可以不需要再境外 VPS ,指定 hosts 后,通过 iptables 重定向流量到命令行启动的端口,然后再转发到代理就好了
    villivateur
        9
    villivateur  
    OP
       2023-05-25 14:17:29 +08:00
    @choury 我的需求是代理速度慢的站点,不是被墙的站点
    cat
        10
    cat  
       2023-05-25 14:28:32 +08:00
    nginx 四层转发即可
    ysc3839
        11
    ysc3839  
       2023-05-25 15:31:00 +08:00 via Android
    那就是 sni proxy ,实现的项目非常多,C 和 golang 的都有,甚至 nginx 配置一下也能实现
    eudemonwind
        12
    eudemonwind  
       2023-05-25 15:37:34 +08:00 via Android
    这么搞,遇到被阻断的 sni 就歇菜了,如果是已经被墙黑了的 sni ,搞不好你小鸡 ip 也会被墙。

    可以闹个半路转换 sni 的工具,比如你连你小鸡的时候用 https--www-google-com.yousite.com ,小鸡上有程序把这个 sni 转换成 www.google.com 再转发出去,但是这样直接转 https 流量会显示证书错误,跳过的话又有安全风险。还不能排除墙没有识别证书的功能,万一墙看一眼你的证书是谷狗的,就直接把你小鸡 ip 办了。。。


    所以最理想的还是用 nginx 等工具,直接反代谷狗,证书啥的用你自己的有效证书。但这样又不太灵活,loc 和 v2 坛子里有大佬写过一些万能配置,类似 ghproxy.com 那种的,可是用起来又有各种各样的问题。。。。。。目前还没有太完美的,有的话给我个传送门,我也在找这个。
    julyclyde
        13
    julyclyde  
       2023-05-25 15:56:07 +08:00
    @sujin190 sevent.helpers 不算标准库吧?
    ysc3839
        14
    ysc3839  
       2023-05-25 15:59:05 +08:00 via Android
    @eudemonwind 用自己证书的话直接弄成 https proxy 就完事了
    Remember
        15
    Remember  
       2023-05-25 16:02:50 +08:00
    haproxy 满足你的需求
    march1993
        16
    march1993  
       2023-05-25 16:09:56 +08:00
    @choury 把 sni 信息编码进 ssl 头的其他部分,然后替换一个正常 sni
    sujin190
        17
    sujin190  
       2023-05-25 16:13:23 +08:00
    @julyclyde #13 是的,需要 pip install sevent
    SenLief
        18
    SenLief  
       2023-05-25 17:12:16 +08:00
    haproxy 就可以利用 sni 分流。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1028 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 33ms UTC 18:40 PVG 02:40 LAX 10:40 JFK 13:40
    Do have faith in what you're doing.
    ubao msn 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