若干代理转换工具
2023-8-30 10:46:31 Author: blog.nsfocus.net(查看原文) 阅读量:43 收藏

阅读: 17

一、背景介绍

现在加密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 <downstream>:<port>
forward-socks5 / <upstream>:<port> .
————————————————————————–

此处假设”<upstream>:<port>”是加密SOCKS5代理,执行privoxy.exe,之后”<downstream>:<port>”将提供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://<downstream>:<port> -r http://<upstream>:<port>

上例将暴露出downstream,在同一端口上提供HTTP、SOCKS4、SOCKS5代理,其upstream是HTTP代理。没这需求的,不要问使用场景是什么。

测试downstream:

curl –proxy http://<downstream>:<port> -k https://ip4.me
curl –proxy socks4://<downstream>:<port> -k https://api.ipify.org
curl –proxy socks5h://<downstream>:<port> -k https://myexternalip.com/raw

官方文档有更多复杂示例,代理类型转换只是它的副作用,强烈建议遍历官方文档。pproxy实在太好用了,Windows用户有必要转成便携版单独一个EXE用。

四、gost

在微博上推荐pproxy,网友UID(1762568450)在评论区提及gost,看了一下,同属神器,参[3]。

gost类似pproxy,只不过用Go开发的。同样可在同一端口同时提供多种类型代理,比如让downstream是SOCKS5代理、upstream是HTTP代理。

gost -L=<downstream>:<port> -F=http://<upstream>:<port>
gost -L=auto://<downstream>:<port> -F=http://<upstream>:<port>
gost -L=socks5h+http://<downstream>:<port> -F=http://<upstream>:<port>

测试downstream:

curl –proxy socks5h://<downstream>:<port> -k https://api.ipify.org
curl –proxy http://<downstream>:<port> -k https://myexternalip.com/raw

“gost -L”中socks4a不可与socks5h、http同时出现,否则要么socks4a不如愿工作,要么其他类型代理不如愿工作,可能是BUG。socks4a单独使用没问题。

gost -L=socks4a://<downstream>:<port> -F=http://<upstream>:<port>

测试downstream:

curl –proxy socks4a://<downstream>:<port> -k https://ip4.me

官方文档有更多复杂示例,代理类型转换只是它的副作用,强烈建议遍历官方文档。相比pproxy,gost的优势是更容易得到gost.exe,在Windows中使用。Go语言提供了跨平台交叉编译支持,可在Linux中编译获取Windows中运行的PE。

五、参考资源

[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/

版权声明
本站“技术博客”所有内容的版权持有者为绿盟科技集团股份有限公司(“绿盟科技”)。作为分享技术资讯的平台,绿盟科技期待与广大用户互动交流,并欢迎在标明出处(绿盟科技-技术博客)及网址的情形下,全文转发。
上述情形之外的任何使用形式,均需提前向绿盟科技(010-68438880-5462)申请版权授权。如擅自使用,绿盟科技保留追责权利。同时,如因擅自使用博客内容引发法律纠纷,由使用者自行承担全部法律责任,与绿盟科技无关。


文章来源: https://blog.nsfocus.net/https/
如有侵权请联系:admin#unsafe.sh