海外美国socks5 proxy 静态ip代理 购买

常见问题

2021-10-29 09:06:38

建一个socks5代理集群

分享到:
0


建一个socks5代理集群

背景

由于在线工具中部分工具有代理IP的需求,而又没有找到一个稳定的代理IP方案(支持集群),在此背景下产生了这个项目。

架构图


功能点

  1. 多账户支持, socks5密码验证
  2. 可用性,集群保证
  3. 流量计算,阈值限制
  4. Custom DNS, 可进行域名白名单的控制
  5. 安全,防止暴力破解socks5密码


表设计


REATE TABLE `pre_accounts` (

`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,

`accountname` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',

`password` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',

`used` int(10) unsigned NOT NULL DEFAULT '0',

`max` int(10) unsigned NOT NULL DEFAULT '0',

`created_at` datetime NOT NULL,

`updated_at` datetime NOT NULL,

PRIMARY KEY (`id`),

UNIQUE KEY `idx_accountname` (`accountname`)

) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;



Socks5的基础知识

这里就不重复写了,链接到 一个简单的Golang实现的Socks5 Proxy

功能点的实现

多账户支持, socks5密码验证

实现 github.com/armon/go-socks5/credentials.go CredentialStore 接口,进行校验;注意:每次proxy都会进行验证,如果请求量比较大,自行选择缓存方式

可用性,集群保证

每台socks5 server心跳上报到etcd,通过阈值,判断socks5的存活

流量计算,阈值限制

github.com/armon/go-socks5/request.go:358 修改这个函数的调用函数

安全,防止暴力破解socks5密码

使用 ratelimit 来保证,如果错误次数过多,则直接将IP加入黑名单;原理可以看之前写过的一篇文章 使用 redis 做限流


上一篇:易语言接入调用socks5/http代理IP
下一篇:常见问题