代码片段: https://gist.github.com/jan-bar/b856c271712a6481260131dd66dd7ffe

测试命令如下
```sh
# http CONNECT proxy method
curl -v -x http://127.0.0.1:1080 https://cn.bing.com https://www.baidu.com https://www.sina.com
# http direct proxy method
curl -v -x http://127.0.0.1:1080 cn.bing.com www.baidu.com www.sina.com
# socks5 proxy method
curl -v -x socks5://127.0.0.1:1080 https://cn.bing.com https://www.baidu.com https://www.sina.com
# socks5h proxy method
curl -v -x socks5h://127.0.0.1:1080 https://cn.bing.com https://www.baidu.com https://www.sina.com
```

还可以在 func proxyDial 方法中添加连接二级代理服务器的代码。
举报· 98 次点击
登录 注册 站外分享
8 条回复  
sunny352787 小成 2024-8-29 12:01:41
嗯,这种处理基本是现在的代理标配了,比如 clash: https://github.com/wangtz0607/clash/blob/main/listener/mixed/mixed.go
0o0O0o0O0o 小成 2024-8-29 12:09:54
我最早是在 @nadoo 的代码里看见的,现在已经是标配了
- /t/375186
- https://github.com/nadoo/glider/blob/668d5bc47038453e7798a6d840f6081058991a3f/mixed.go
jason56 小成 2024-8-29 14:56:45
nowtunnel 中的代理功能也是这么做的
- 一款不一样的组网、代理工具 https://www.nowtunnel.com
canyue7897 小成 2024-8-29 15:01:27
请问这种是标准的 http socks 么?这种混合端口如果同时有数据过来,clash 有时候不识别。
aladdinding 小成 2024-8-29 15:15:52
实现原理就是 net.Conn 的包装,先读几个字节匹配协议,然后丢给协议的 listener
DefoliationM 小成 2024-8-29 18:07:50
socks4 也可以加上,很简单。
bagel 小成 2024-8-29 18:28:08
拆下包的事,说白了就是这道 leetcode medium: https://leetcode.cn/problems/utf-8-validation
ysc3839 小成 2024-8-29 18:50:10
@body007 SSR 就支持,不过用了取巧的方法,方法是开个 Privoxy ,数据进来先尝试按 SOCKS 解析,解析失败就转发到 Privoxy ,Privoxy 会尝试按 HTTP 解析,解析成功就转换成 SOCKS 请求再发回来。
返回顶部