登录
  • 人们都希望被别人需要 却往往事与愿违
  • 不要盲目地崇拜任何权威, 因为你总能找到相反的权威@罗素 (哲学家 数学家)

把 Cloudflare WARP 转换为 http 代理

Cloudflare Benny小土豆 1208次浏览 1466字 8个评论

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

把 Cloudflare WARP 转换为 http 代理

怎么报错了呢🤨

可能是 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

把 Cloudflare WARP 转换为 http 代理

那……Privoxy

forward-socks5 / 127.0.0.1:60606 .

也不行!

甚至直接在 Firefox里设置socks5代理,也不行🤨

把 Cloudflare WARP 转换为 http 代理

任何网站都打不开

把 Cloudflare WARP 转换为 http 代理

偶然取消 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

人生中宝贵的几个小时就这么没了。


文章版权归原作者所有丨本站默认采用CC-BY-NC-SA 4.0协议进行授权|
转载必须包含本声明,并以超链接形式注明原作者和本文原始地址:
https://dmesg.app/warp-http-proxy.html
喜欢 (1)
分享:-)
关于作者:
If you have any further questions, feel free to contact me in English or Chinese.
发表我的评论
取消评论

                     

去你妹的实名制!

  • 昵称 (必填)
  • 邮箱 (必填,不要邮件提醒可以随便写)
  • 网址 (选填)
(8)个小伙伴在吐槽
  1. sing-box也可以,他有灵活的dns策略。 { "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 } ] }
    crazy2024-11-24 14:13 回复
  2. 在中国用不了哎。
    桃桃2024-11-22 20:32 回复
    • 是的:-(
      Benny小土豆2024-11-22 21:20 回复
  3. 我在 docker里想把warp作为后台服务给跑起来,一直没成功。有跑起来的朋友吗?
    Jiawen Geng2024-11-20 10:44 回复
  4. wireproxy 直接就支持啊,不用通过 gost 处理了。
    a2024-11-10 14:21 回复
  5. 忘记说这个gost改进版直接主持wireguard/warp协议
    crackz2024-11-10 05:52 回复
  6. 如果已经使用gost来转换的话,不如用下面这个gost改进版的项目 https://github.com/happyharryh/gost 编译命令参考这个issue https://github.com/ginuerzh/gost/issues/859 然后下面使用命令,由于warp不支持UDP的DNS查询,所以需要强迫gost走tcp方式的dns查询,由于有了这个改进版的gost,inbound的listen方式的选择性就非常多 gost -L=:8080?dns=8.8.8.8/tcp-chain -F=wg://?c=/gost/wgproxy.conf
    crackz2024-11-10 05:49 回复
  7. 其实类似于 proxychains 用法的,除了 pproxy 之外,graftcp(https://github.com/hmgle/graftcp) 也是挺好用的,可以支持 go 写的静态编译的程序,而且也支持 socks5 上游。 可以试试看。
    yitong2024-11-03 21:46 回复