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

2023-05-25 12:58:14 +08:00
 villivateur

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

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

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

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

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

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

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

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


所以最理想的还是用 nginx 等工具,直接反代谷狗,证书啥的用你自己的有效证书。但这样又不太灵活,loc 和 v2 坛子里有大佬写过一些万能配置,类似 ghproxy.com 那种的,可是用起来又有各种各样的问题。。。。。。目前还没有太完美的,有的话给我个传送门,我也在找这个。
julyclyde
2023-05-25 15:56:07 +08:00
@sujin190 sevent.helpers 不算标准库吧?
ysc3839
2023-05-25 15:59:05 +08:00
@eudemonwind 用自己证书的话直接弄成 https proxy 就完事了
Remember
2023-05-25 16:02:50 +08:00
haproxy 满足你的需求
march1993
2023-05-25 16:09:56 +08:00
@choury 把 sni 信息编码进 ssl 头的其他部分,然后替换一个正常 sni
sujin190
2023-05-25 16:13:23 +08:00
@julyclyde #13 是的,需要 pip install sevent
SenLief
2023-05-25 17:12:16 +08:00
haproxy 就可以利用 sni 分流。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/942839

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX