标题: 若干代理转换工具 创建: 2023-08-29 19:02 更新: 2023-08-30 13:21 链接: https://scz.617.cn/network/202308291902.txt -------------------------------------------------------------------------- 目录: ☆ 背景介绍 ☆ Privoxy ☆ pproxy ☆ gost ☆ glider ☆ 参考资源 -------------------------------------------------------------------------- ☆ 背景介绍 现在加密SOCKS5代理很普遍,HTTP(S)代理已经逐渐退出历史舞台,但总有一些场景 只支持HTTP代理、不支持SOCKS5代理。有时需要在不同代理之间进行类型转换,不只 是SOCKS5转HTTP,也可能是HTTP转SOCKS5,或其他类型转换。在此过程中,意外发现 一些相当不错的成熟工具,遂记之。本文将迭代更新,不再单开新篇。 ☆ Privoxy 参[1],Privoxy可将SOCKS5代理转成HTTP代理。这是古老工具,用了很多年,时至今 日仍能工作。出于完备性考虑,也记于此间。 当前最新稳定版是3.0.34,有绿色便携版,一个zip文件解压到任意目录。编辑解压 目录下的config.txt,搜"listen-address 127.0.0.1:8118",注释掉该行,加入如 下行: -------------------------------------------------------------------------- listen-address : forward-socks5 / : . -------------------------------------------------------------------------- 此处假设":"是加密SOCKS5代理,执行privoxy.exe,之后 ":"将提供HTTP代理,可用IE测试该HTTP代理可用。 ☆ pproxy 参[2],pproxy可在同一端口同时提供多种类型代理,可让downstream是SOCKS5代理、 upstream是HTTP代理,相比之下,Privoxy只能将HTTP代理转成SOCKS5代理。 安装: pip3 install pproxy 查看帮助: $ pproxy -h $ python3 -m pproxy -h usage: pproxy [-h] [-l LISTEN] [-r RSERVER] [-ul ULISTEN] [-ur URSERVER] [-b BLOCK] [-a ALIVED] [-s {fa,rr,rc,lc}] [-d] [-v] [--ssl SSLFILE] [--pac PAC] [--get GETS] [--auth AUTHTIME] [--sys] [--reuse] [--daemon] [--test TEST] [--version] Proxy server that can tunnel among remote servers by regex rules. Supported protocols: http,socks4,socks5,shadowsocks,shadowsocksr,redirect,pf,tunnel options: -h, --help show this help message and exit -l LISTEN tcp server uri (default: http+socks4+socks5://:8080/) -r RSERVER tcp remote server uri (default: direct) -ul ULISTEN udp server setting uri (default: none) -ur URSERVER udp remote server uri (default: direct) -b BLOCK block regex rules -a ALIVED interval to check remote alive (default: no check) -s {fa,rr,rc,lc} scheduling algorithm (default: first_available) -d turn on debug to see tracebacks (default: no debug) -v print verbose output --ssl SSLFILE certfile[,keyfile] if server listen in ssl mode --pac PAC http PAC path --get GETS http custom {path,file} --auth AUTHTIME re-auth time interval for same ip (default: 86400*30) --sys change system proxy setting (mac, windows) --reuse set SO_REUSEPORT (Linux only) --daemon run as a daemon (Linux only) --test TEST test this url for all remote proxies and exit --version show program's version number and exit 极简示例: pproxy -v -l http+socks4+socks5://: -r http://: 上例将暴露出downstream,在同一端口上提供HTTP、SOCKS4、SOCKS5代理,其 upstream是HTTP代理。没这需求的,不要问使用场景是什么。 测试downstream: curl --proxy http://: -k https://ip4.me curl --proxy socks4://: -k https://api.ipify.org curl --proxy socks5h://: -k https://myexternalip.com/raw 官方文档有更多复杂示例,代理类型转换只是它的副作用,强烈建议遍历官方文档。 pproxy实在太好用了,Windows用户有必要转成便携版单独一个EXE用。 ☆ gost 在微博上推荐pproxy,网友UID(1762568450)在评论区提及gost,看了一下,同属神 器,参[3]。 gost类似pproxy,只不过用Go开发的。同样可在同一端口同时提供多种类型代理,比 如让downstream是SOCKS5代理、upstream是HTTP代理。 gost -L=: -F=http://: gost -L=auto://: -F=http://: gost -L=socks5h+http://: -F=http://: 测试downstream: curl --proxy socks5h://: -k https://api.ipify.org curl --proxy http://: -k https://myexternalip.com/raw "gost -L"中socks4a不可与socks5h、http同时出现,否则要么socks4a不如愿工作, 要么其他类型代理不如愿工作,可能是BUG。socks4a单独使用没问题。 gost -L=socks4a://: -F=http://: 测试downstream: curl --proxy socks4a://: -k https://ip4.me 官方文档有更多复杂示例,代理类型转换只是它的副作用,强烈建议遍历官方文档。 相比pproxy,gost的优势是更容易得到gost.exe,在Windows中使用。Go语言提供了 跨平台交叉编译支持,可在Linux中编译获取Windows中运行的PE,我已经爽上了。 粗略看了一下,pproxy、gost的作者好像都是中国人,不愧是活在寡妇王凝视下的弗 力曼战士,太优秀啦! ☆ glider 网友UID(3187105054)在评论区提及glider,参[4]。 glider类似gost,也是用Go开发的。 glider -verbose -listen socks5://: -forward http://: 测试downstream: curl --proxy socks5h://: -k https://myexternalip.com/raw ☆ 参考资源 [1] Privoxy https://www.privoxy.org/ [2] python-proxy https://github.com/qwj/python-proxy [3] GO Simple Tunnel https://github.com/ginuerzh/gost/ https://v2.gost.run/ https://latest.gost.run/ [4] glider https://github.com/nadoo/glider