V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
villivateur
V2EX  ›  问与答

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

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

    需求是这样的:很多境外网站加载很慢,有一个舒服的办法是,买一个速度快的境外 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  
       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   ·   实用小工具   ·   958 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 23:00 · PVG 07:00 · LAX 15:00 · JFK 18:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.