内容简介:Proxy 是 golang 实现的高性能 http、https、websocket、tcp、udp、socks5 代理服务器,支持正向代理、反向代理、透明代理、内网穿透、TCP/UDP 端口映射、SSH 中转、TLS 加密传输、协议转换、DNS 防污染智能代理、...
Proxy 是 golang 实现的高性能 http、https、websocket、tcp、udp、socks5 代理服务器,支持正向代理、反向代理、透明代理、内网穿透、TCP/UDP 端口映射、SSH 中转、TLS 加密传输、协议转换、DNS 防污染智能代理、前置 CDN/Nginx 反代、代理连接重定向、API动态调用上级代理、限速限连接数。同时提供全平台的功能强大的命令行版本和友好易用的 web 控制面板版本。
更新内容
1.socks/http(s)/sps/tcp/udp/dns/内网穿透bridge/内网穿透tbridge增加了客户端IP黑白名单。
用--ip-deny参数指定一个客户端IP黑名单列表文件,那么当用户的IP在这个文件里面的时候连接就会被断开。
用--ip-allow参数指定一个客户端IP白名单列表文件,那么当用户的IP不在这个文件里面的时候连接就会被断开。
如果同时设置了--ip-deny和--ip-allow,那么只有--ip-allow会起作用。 2.socks/http(s)/sps增加了api获取用户连接数及速度限制和针对客户端IP的连接数及速度限制,获取上级。
假设--auth-url http://127.0.0.1:333/auth.php 指向了一个 php 接口地址.
auth.php内容如下:
<?php
$proxy_ip=$_GET['local_addr'];
$user_ip=$_GET['client_addr'];
$service=$_GET['service'];
$is_sps=$_GET['sps']=='1';
$user=$_GET['user'];
$pass=$_GET['pass'];
$target=$_GET['target'];
//业务逻辑判断
//....
//设置认证结果
header("userconns:1000");
header("ipconns:2000");
header("userrate:3000");
header("iprate:8000");
header("UPSTREAM:http://127.0.0.1:3500?parent-type=tcp");
header("HTTP/1.1 204 No Content");
解释:
所有的字段都是非必须的,最后的状态是必须的,默认返回204状态码是认证成功,其它状态码失败。
$proxy_ip是用户访问的代理IP。
$user_ip是访问代理的用户IP。
$user认证用户名
$pass认证密码
$target当是http(s)代理认证的时候,这里是用户访问的http(s)地址,socks5代理这个为空。
userconns:用户的最大连接数,不限制为0或者不设置这个头部。
ipconns:用户IP的最大连接数,不限制为0或者不设置这个头部。
userrate:用户的单个TCP连接速率限制,单位:字节/秒,不限制为0或者不设置这个头部。
iprate:用户IP的单个TCP连接速率限制,单位:字节/秒,不限制为0或者不设置这个头部。
upstream:使用的上级,没有为空,或者不设置这个头部。
提示:
1.如果不需要客户端用户名密码认证,可以加上--auth-nouser,每次访问仍然会访问认证地址--auth-url进行认证。只是php接口里面接收的$user认证用户名和$pass认证密码都为空。
2.连接数限制优先级:用户认证文件速率限制-》文件ip.limit速率限制-》API用户速率限制-》API的IP速率限制-》命令行全局连接数限制。
3.速率限制优先级:用户认证文件速率限制-》文件ip.limit速率限制-》API用户速率限制-》API的IP速率限制-》命令行全局速率限制。
3.上级获取优先级:用户认证文件的upstream-》文件ip.limit的upstream-》API的upstream-》命令行指定的上级。
http代理的upstream只支持http(s)代理,不支持认证,如需要认证可以用sps代替,格式:
`http://127.0.0.1:3100?parent-type=tcp&timeout=5000`
socks代理的upstream只支持socks5代理,格式:
`socks://127.0.0.1:3100?parent-type=tcp&timeout=5000`
解释:`http://`,`socks://` 是固定的,`127.0.0.1:3100`是上级的地址,`?`后面是参数:参数名称=参数值,多个参数用`&`连接。
url里面支持的所有参数如下,和命令行同名参数意义一致。
1. parent-type : 上级底层传输类型,支持 tcp,tls,ws,wss
2. parent-ws-method : 上级底层ws传输类型的加密方法,支持的值和命令行支持的值范围一样
3. parent-ws-password : 上级底层ws传输类型的加密密码,数字字母组成的密码
4. parent-tls-single : 上级底层tls传输类型是否是单向tls,可以是:true | false
5. timeout : 建立tcp连接的超时时间,数字,单位毫秒
6. ca : 上级底层tls传输类型的ca证书文件经过base64编码后的字符串。
7. cert : 上级底层tls传输类型的证书文件经过base64编码后的字符串。
8. key : 上级底层tls传输类型的证书密钥文件经过base64编码后的字符串。
sps代理的upstream支持socks5、http(s)代理,支持认证,格式:
`protocol://a:b@2.2.2.2:33080?argk=argv`
说明:
1.protocol:// 是协议类型,可能的类型以及含有如下:
http 等价于 -S http -T tcp
https 等价于 -S http -T tls --parent-tls-single , 也就是http(s)代理 over TLS
https2 等价于 -S http -T tls
socks5 等价于 -S socks -T tcp
socks5s 等价于 -S socks -T tls --parent-tls-single , 也就是socks over TLS
socks5s2 等价于 -S socks -T tls
ss 等价于 -S ss -T tcp
httpws 等价于 -S http -T ws
httpwss 等价于 -S http -T wss
socks5ws 等价于 -S socks -T ws
socks5wss 等价于 -S socks -T wss
2.`2.2.2.2:33080`
2.a:b是认证信息(http(s)代理basic认证或者socks5认证)
3.argk=argv是额外参数,支持的所有参数和http(s)代理支持的upstream的参数一致。
3.增加了认证缓存,对认证结果缓存一定时间,提升性能,降低认证接口压力,--auth-cache 单位秒,默认60, 设置0是关闭缓存。
4.增加了--ip-limit参数控制客户端IP的连接数和连接速率,该参数指定一个文件,一行一条规则,#开头的是注视。
示例文件ip.limit,规则格式如下:
`127.0.0.1????10240:http://192.168.1.1:3100`
规则解释:
`127.0.0.1`是要限制的IP
`100`是这个IP的最大连接数,不限制写0
`10240`是IP单个tcp连接的速率限制,单位是:字节/s,不限制写0
`http://192.168.1.1:3100`是这个IP使用的上级,没有就留空
5.socks/http(s)/sps用户认证文件增加了对控制用户对连接数和连接速率对支持。
认证文件以前是:
user:password
现在可以是:
user:pass????10240:http://192.168.1.1:3100
规则解释:
`user`是认证用户名
`pass`是认证用户密码(不能包含冒号:)
`100`是这个用户的最大连接数,不限制写0
`10240`是这个用户单个tcp连接的速率限制,单位是:字节/s,不限制写0
`http://192.168.1.1:3100`是这个用户使用的上级,没有就留空
6.socks/http(s)/sps用户认证-a参数支持如下写法:
user:pass????10240:http://192.168.1.1:3100
格式和上面一样。
7.修复了socks代理某些情况下是否使用上级判断不准确的问题。
8.修复了http(s)代理,代理http协议时,某些情况下HOST不规范的问题。
9.修复了sps代理上级是SS的时候,某些情况下不能正确处理加密参数的问题。
10.http(s)/socks/sps代理,增加了全局连接数限制参数--max-conns,默认0不限制。
11.为了提供更好的体验,默认情况不再加载当前目录的blocked,direct,stop文件,如需要加载可以用参数显示指定文件。
12.blocked,direct,stop,only,hosts,resolve.rules,rewriter.rules文件支持协议加载:base64://,str://,文件名。
13.修复dns代理,关闭不正确的问题。
特色功能
- 链式代理,程序本身可以作为一级代理,如果设置了上级代理那么可以作为二级代理,乃至N级代理。
- 通讯加密,如果程序不是一级代理,而且上级代理也是本程序,那么可以加密和上级代理之间的通讯,采用底层tls高强度加密,安全无特征。
- 智能HTTP,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代理转换为一个端口同时支持HTTP(S)和SOCKS5代理,转换后的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代理支持客户端用入口IP连接过来的,就用入口IP作为出口IP访问目标网站的功能。如果入口IP是内网IP,出口IP不会使用入口IP
-
支持限速,HTTP(S)\SOCKS5\SPS代理支持限速。
-
支持级联认证。
-
支持客户端IP黑白名单,更加安全的控制客户端对代理服务的访问,如果黑白名单同时设置,那么只有白名单生效。socks/http(s)/sps/tcp/udp/dns/内网穿透bridge/内网穿透tbridge,都支持客户端IP黑白名单。
下载地址:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 关于nginx的限速模块
- Android下载器之限速篇
- 百度不限速下载器 BND2 技术架构简介
- 如何用Redis实现一个指定时间的限速器
- 百度网盘不限速下载 Chrome 插件 1.1.0 兼容苹果系统
- 微服务之服务治理:Envoy 全局 gRPC 限速服务 lyft/ratelimit 详解
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。