Cloduflare WARP 真的非常好用,并且支持代理模式。启用这个模式之后,它会在本机监听一个 socks 端口,应用程序可以配置到这个端口来使用代理。
对于服务器来说,一般使用 warp-cli
- warp-cli proxy port 60606
- warp-cli mode proxy
之后你就可以 curl
啦
- https_proxy=socks5://127.0.0.1:60606 http_proxy=socks5://127.0.0.1:60606 curl ipv4.win
- IP: 104.28.157.116 CLOUDFLARE.COM CLOUDFLARE.COM
然而,Go 的程序不支持 socks 代理,要手动加 transport 我可没那个功夫去加。
好消息是,Go 默认是尊重环境变量http_proxy
的。那么就要想办法给 socks 代理转换为 http 代理
这事很简单嘛!用pproxy
就好了,别的不会,这个肯定很会!
- pproxy -v -l http://127.0.0.1:8118 -r socks5://127.0.0.1:60606
- https_proxy=http://127.0.0.1:8118 http_proxy=http://127.0.0.1:8118 curl ipv4.win
- curl: (52) Empty reply from server
- # pproxy logs
- Serving on ipv? 127.0.0.1:8118 by http
- http 127.0.0.1:45012 -> socks5 127.0.0.1:60606 -> ipv4.win:80
- Unknown remote protocol from 127.0.0.1
怎么报错了呢🤨
可能是 pproxy
的问题,那么用gost
!
- gost -L http://127.0.0.1:8118 -F socks5://127.0.0.1:60606
- 2024/11/03 12:32:43 route.go:700: http://127.0.0.1:8118 on 127.0.0.1:8118
- 2024/11/03 12:32:46 http.go:162: [http] 127.0.0.1:33284 -> http://127.0.0.1:8118 -> ipv4.win:80
- 2024/11/03 12:32:46 http.go:257: [route] 127.0.0.1:33284 -> http://127.0.0.1:8118 -> 1@socks5://127.0.0.1:60606 -> ipv4.win:80
- 2024/11/03 12:32:46 http.go:280: [http] 127.0.0.1:33284 -> 127.0.0.1:8118 : unexpected EOF
那……Privoxy
- forward-socks5 / 127.0.0.1:60606 .
也不行!
甚至直接在 Firefox 里设置 socks5 代理,也不行🤨
任何网站都打不开
偶然取消 DNS 请求的勾选,就成功了…… 突然恍然大悟,WARP 可能不支持远程解析 DNS
那么要么用回 socks4
- pproxy -v -l http://127.0.0.1:8118 -r socks4://127.0.0.1:60606
- gost -L http://127.0.0.1:8118 -F socks4://127.0.0.1:60606
要么给加上 DNS 的支持
- gost -L "http://127.0.0.1:8118?dns=1.1.1.1" -F socks5://127.0.0.1:60606
人生中宝贵的几个小时就这么没了。
{ "inbounds": [ { "type": "mixed", "listen": "::", "listen_port": 7890 } ], "outbounds": [ { "type": "wireguard", "server": "engage.cloudflareclient.com", "server_port": 2408, "local_address": [ "172.16.0.2/32", "2606:.../128" ], "private_key": "...", "peer_public_key": "bmXOC+F1FxEMF9dyiK2H5/1SUtzH0JuVo51h2wPfgyo=", "mtu": 1280 } ] }