wget https://github.com/snail007/goproxy/releases/download/v11.0/proxy-linux-amd64.tar.gz
tar xvf proxy-linux-amd64.tar.gz
./proxy http -p 127.0.0.1:38080 & (这样就在vps本机的38080端口上,建立了一个http proxy)
./proxy socks -p 127.0.0.1:38081 &
(这样就在vps本机的38081端口上,建立了一个socks proxy)
项目地址:
https://github.com/snail007/goproxy/releases
https://snail007.github.io/goproxy/manual/zh/#/?id=_1http%e4%bb%a3%e7%90%86
https://snail007.github.io/goproxy/manual/zh/#/?id=_5socks5%e4%bb%a3%e7%90%86
--------------------------------
新增特性:
1、--bind-ip
参数的 IP
部分,支持指定网卡名称
,通配符
,还能指定多个,详细说明如下:
- 指定网卡名称,比如:
--bind-ip eth0:7777
,那么客户端访问7777
端口,出口 IP 就是 eth0 网卡的 IP。 - 网卡名称支持通配符,比如:
--bind-ip eth0.*:7777
,那么客户端访问7777
端口,出口 IP 就是eth0.
开头网卡的 IP 中随机选择的一个。 - IP 支持通配符,比如:
--bind-ip 192.168.?.*:7777
,那么客户端访问7777
端口,出口 IP 就是机器所有 IP 中,匹配192.168.?.*
的 IP 中随机选择的一个。 - 还可以是网卡名称和 IP 的多个组合,多个使用半角逗号分割,比如:
--bind-ip pppoe??,192.168.?.*:7777
,那么客户端访问7777
端口,出口 IP 就是机器网卡名称匹配pppoe??
和机器所有 IP 中匹配192.168.?.*
的 IP 中随机选择的一个。 - 通配符
*
代表 0 至任意多个字符,?
代表 1 个字符。 - 如果网卡 IP 发生变化,也会实时生效。
- 可以通过
--bind-refresh
参数,指定刷新本地网卡信息的间隔,默认5
,单位秒。
2、所有日志重构,使用 gmc 框架,日志输出更加规范,排查问题更准确。
手册新增典型用法,13,14,15。
手册地址: https://snail007.host900.com/goproxy/manual/zh/#/
13. 典型用法 - 拨号 VPS
为了方便说明,假设背景情况如下:
1、vps 有一个主网卡,名称是 eth0,ip 是 1.1.1.1,然后 vps 可以 pppoe 拨号,拨号建立的网卡名称前缀都是 pppoe_
。
实现的效果:
- 提供动态 IP 代理服务,客户端访问
1.1.1.1
的代理端口7777
,可以使用拨号的 ip 随机选择一个作为出口,7777
端口支持代理认证。 - 7777 端口同时支持 http/socks5 代理。
操作步骤:
- vps 执行
proxy sps -p :7777 --bind-ip pppoe_*:7777 -a user1:password1 -a user2:password2
。 - 命令中
-a
是设置代理认证用户
,多个用户,可以重复-a
参数,格式是:用户名:密码
。 - 更多认证方式可以参考手册
API认证
,认证
部分。
14. 典型用法 - 多 IP 的 VPS
为了方便说明,假设背景情况如下:
1、vps 有一个主网卡,名称是 eth0
,ip 是 1.1.1.1,然后 eth0
配置了 255 个子网卡并设置了 IP,比如:eth0:1
,eth0:255
,子网卡名称前缀都是:eth0:
。
实现的效果:
- 提供动态 IP 代理服务,客户端访问
1.1.1.1
的代理端口7777
,可以使用配置的 255 个子网卡的 ip 中随机选择一个作为出口,7777
端口支持代理认证。 - 7777 端口同时支持 http/socks5 代理。
操作步骤:
- vps 执行
proxy sps -p :7777 --bind-ip eth0::7777 -a user1:password1 -a user2:password2
。 - 命令中
-a
是设置代理认证用户
,多个用户,可以重复-a
参数,格式是:用户名:密码
。 - 更多认证方式可以参考手册
API认证
,认证
部分。
15. 典型用法 - 拨号的 VPS 集群
为了方便说明,假设背景情况如下:
1、有一批 vps,它们每个都有一个主网卡配置了固定的 IP:x.x.x.x,然后 vps 可以 pppoe 拨号,拨号建立的网卡名称前缀都是 pppoe_
。
2、有一个 VPS 作为代理入口,它的 ip 是 2.2.2.2。
实现的效果:
2.2.2.2
提供动态 IP 代理服务,客户端访问2.2.2.2
的代理端口8888
,可以随机选择拨号 vps 集群中一个,然后使用拨号 vps 的拨号 ip 随机选择一个作为出口 ip,8888
端口支持代理认证。8888
端口同时支持 http/socks5 代理。
操作步骤:
拨号 VPS:
- 拨号的 vps 执行
proxy sps -p :7777 --bind-ip pppoe_:7777
。
入口 VPS:
2.2.2.2
的 vps 执行proxy sps -p :8888 -a user1:password1 -a user2:password2 -P http://x.x.x.1:7777 -P http://x.x.x.2:7777
。- 命令中
-a
是设置代理认证用户
,多个用户,可以重复-a
参数,格式是:用户名:密码
。 x.x.x.1
,x.x.x.2
是拨号 vps 的固定 IP,有多个,重复-P
参数即可
更新: v10.7 及以后版本,执行:proxy update
,即可完成快速更新到最新版。
特色功能
- 链式代理,程序本身可以作为一级代理,如果设置了上级代理那么可以作为二级代理,乃至 N 级代理。
- 通讯加密,如果程序不是一级代理,而且上级代理也是本程序,那么可以加密和上级代理之间的通讯,采用底层 tls 高强度加密,安全无特征。
- 智能 HTTP 代理,HTTPS 代理,SOCKS5 代理,会自动判断访问的网站是否屏蔽,如果被屏蔽那么就会使用上级代理 (前提是配置了上级代理) 访问网站;如果访问的网站没有被屏蔽,为了加速访问,代理会直接访问网站,不使用上级代理。
- 域名黑白名单,更加自由的控制网站的访问方式。
- 跨平台性,无论你是 widows,linux,还是 mac,甚至是树莓派,都可以很好的运行 proxy。
- 多协议支持,支持 HTTP (S),TCP,UDP,Websocket,SOCKS5 代理。
- TCP/UDP 端口转发。
- 游戏盾,游戏代理,高仿服务器。
- 内网穿透,P2P 传输,协议支持 TCP 和 UDP,针对 HTTP 的优化穿透。
- SSH 中转,HTTP (S),SOCKS5 代理支持 SSH 中转,上级 Linux 服务器不需要任何服务端,本地一个 proxy 即可开心上网。
- KCP 协议支持,HTTP (S),SOCKS5 代理支持 KCP 协议传输数据,降低延迟,提升浏览体验。
- 动态选择上级代理,通过外部 API,HTTP (S),SOCKS5,SPS 代理可以实现基于用户或者 IP 的限速,连接数限制,动态获取上级。
- 灵活的上级分配,HTTP (S),SOCKS5,SPS 代理可以通过配置文件实现基于用户或者 IP 的限速,连接数限制,指定上级。
- 反向代理,支持直接把域名解析到 proxy 监听的 ip,然后 proxy 就会帮你代理访问需要访问的 HTTP (S) 网站。
- 透明 HTTP (S) 代理,配合 iptables,在网关直接把出去的 80,443 方向的流量转发到 proxy,就能实现无感知的智能路由器代理。
- 协议转换,可以把已经存在的 HTTP (S) 或 SOCKS5 或 SS 代理转换为一个端口同时支持 HTTP (S) 和 SOCKS5 和 SS 代理,转换后的 SOCKS5 和 SS 代理如果上级是 SOCKS5 代理,那么支持 UDP 功能,同时支持强大的级联认证功能。
- 自定义底层加密传输,http (s)\\sps\\socks 代理在 tcp 之上可以通过 tls 标准加密以及 kcp 协议加密 tcp 数据,除此之外还支持在 tls 和 kcp 之后进行自定义加密,也就是说自定义加密和 tls|kcp 是可以联合使用的,内部采用 AES256 加密,使用的时候只需要自己定义一个密码即可。
- 底层压缩高效传输,http (s)\\sps\\socks 代理在 tcp 之上可以通过自定义加密和 tls 标准加密以及 kcp 协议加密 tcp 数据,在加密之后还可以对数据进行压缩,也就是说压缩功能和自定义加密和 tls|kcp 是可以联合使用的。
- 安全的 DNS 代理,可以通过本地的 proxy 提供的 DNS 代理服务器与上级代理加密通讯实现安全防污染的 DNS 查询。
- 负载均衡,高可用,HTTP (S)\\SOCKS5\\SPS 代理支持上级负载均衡和高可用,多个上级重复 - P 参数即可。
- 指定出口 IP,HTTP (S)\\SOCKS5\\SPS\\TCP 代理支持客户端用入口 IP 连接过来的,就用入口 IP 作为出口 IP 访问目标网站的功能。如果入口 IP 是内网 IP,出口 IP 不会使用入口 IP
- 支持限速,HTTP (S)\\SOCKS5\\SPS\\TCP 代理支持限速。
-
支持限连接数,HTTP (S)\\SOCKS5\\SPS\\TCP 代理支持限连接数。
- SOCKS5 代理支持级联认证。
- 证书参数使用 base64 数据,默认情况下 - C,-K 参数是 crt 证书和 key 文件的路径,如果是 base64:// 开头,那么就认为后面的数据是 base64 编码的,会解码后使用。
- 支持客户端 IP 黑白名单,更加安全的控制客户端对代理服务的访问,如果黑白名单同时设置,那么只有白名单生效。socks/http (s)/sps/tcp/udp/dns/ 内网穿透 bridge / 内网穿透 tbridge,都支持客户端 IP 黑白名单。
- 端口范围批量监听,HTTP (S)\\SOCKS5\\SPS\\TCP 代理支持指定端口范围监听,避免启动过多进程,提高性能。
下载地址:
-
https://github.com/snail007/goproxy
(代理服务器-goproxy
goproxy是国人开发的开源代理服务器, 代理协议包括:http,https,websocket,tcp,udp,socks5。支持正向代理、反向代理、透明代理、内网穿透、TCP/UDP端口映射、SSH中转,TLS加密传输,协议转换。软件基于golang编写,遵循GPL开源协议。
软件特色:
链式代理,程序本身可以作为一级代理,如果设置了上级代理那么可以作为二级代理,乃至N级代理.
通讯加密,如果程序不是一级代理,而且上级代理也是本程序,那么可以加密和上级代理之间的通讯,采用底层tls高强度加密,安全无特征.
智能HTTP,SOCKS5代理,会自动判断访问的网站是否屏蔽,如果被屏蔽那么就会使用上级代理(前提是配置了上级代理)访问网站;如果访问的网站没有被屏蔽,为了加速访问,代理会直接访问网站,不使用上级代理.
域名黑白名单,更加自由的控制网站的访问方式。
跨平台性,无论你是widows,linux,还是mac,甚至是树莓派,都可以很好的运行proxy.
多协议支持,支持HTTP(S),TCP,UDP,Websocket,SOCKS5代理.
TCP/UDP端口转发.
支持内网穿透,协议支持TCP和UDP.
SSH中转,HTTP(S),SOCKS5代理支持SSH中转,上级Linux服务器不需要任何服务端,本地一个proxy即可开心上网.
KCP协议支持,HTTP(S),SOCKS5代理支持KCP协议传输数据,降低延迟,提升浏览体验.
集成外部API,HTTP(S),SOCKS5代理认证功能可以与外部HTTP API集成,可以方便的通过外部系统控制代理用户.
反向代理,支持直接把域名解析到proxy监听的ip,然后proxy就会帮你代理访问需要访问的HTTP(S)网站.
透明HTTP(S)代理,配合iptables,在网关直接把出去的80,443方向的流量转发到proxy,就能实现无感知的智能路由器代理.
协议转换,可以把已经存在的HTTP(S)或SOCKS5代理转换为一个端口同时支持HTTP(S)和SOCKS5代理,转换后的SOCKS5代理不支持UDP功能,同时支持强大的级联认证功能。
使用场景:
通过多个相连的proxy节点建立起一个安全的隧道访问服务.
微信接口本地开发,方便调试.
远程访问内网机器.
和小伙伴一起玩局域网游戏.
以前只能在局域网玩的,现在可以在任何地方玩.
替代圣剑内网通,显IP内网通,花生壳之类的工具.
[repo owner=”snail007″ name=”goproxy”] )
goproxy服务端部署脚本:
goproxy-shell
使用方法
wget --no-check-certificate https://github.com/sjz123321/goproxy-shell/releases/download/v0.1.1_fixed/install_fixed.sh && bash install_fixed.sh
run_goproxy.sh
即可版本号及说明
界面展示
脚本主界面
tcp设置界面
kcp设置界面
socks设置界面
常见的问题
关于中文无法正常显示的问题
相关帖子:
https://briteming.blogspot.com/2020/04/httpgoproxy-by-snail007.html
---------------------------------------------------------
a proxy with go,supports tcp,http,socks4/5
install
go get github.com/ejunjsh/goproxy
run with http:
$GOPATH/bin/goproxy -a :8090 -t http (这样,在8090端口,就搭建了一个http proxy server)
run with socks5:
$GOPATH/bin/goproxy -a :8092 -t socks5 (这样,在8092端口,就搭建了一个socks5 proxy server)
from https://github.com/ejunjsh/goproxy
--------------------------------
goproxy - 简单的代理小工具
简介
开发过程中,有些工具需要使用代理才能使用。本工具可以让大家快速创建一个代理服务。
注意:使用过程中你可能需要使用 qtunnel, ssh 等工具,具有一个不能本地的 vps。
功能
http(s) 代理
socks v5 代理
socks v5 转 http(s) 代理
编译
进入 goproxy 主目录:
make // or make install
查看命令帮助手册:
goproxy --help
goproxy http --help
goproxy socks --help
启动http代理:
goproxy http -l 127.0.0.1:9000
测试 HTTP 代理:
curl --proxy http://127.0.0.1:9000 http://httpbin.org/ip
启动socks v5 代理服务器:
goproxy socks -l 127.0.0.1:9000
测试 SOCKS 代理:
curl --socks5 127.0.0.1:9000 http://httpbin.org/ip
常用工具设置代理
参考:
http://stackoverflow.com/questions/783811/getting-git-to-work-with-a-proxy-server
如果 git repo 地址开头为 http 或 https , 如:
git clone https://github.com/ooclab/goproxy
配置全局设置:
git config --global http.proxy http://proxyuser:proxypwd@proxy.server.com:8080
git config --global https.proxy https://proxyuser:proxypwd@proxy.server.com:8080
取消代理设置:
git config --global --unset http.proxy
git config --global --unset https.proxy
参考:
http://www.emilsit.net/blog/archives/how-to-use-the-git-protocol-through-a-http-connect-proxy/
http 代理:
exec socat STDIO PROXY:$_proxy:$1:$2,proxyport=$_proxyport
socks 代理:
exec socat STDIO SOCKS4:$_proxy:$1:$2,socksport=$_proxyport
查看 git config 设置:
git config -l
from https://github.com/ooclab/goproxy