这是一个用Go语言实现的功能强大的SOCKS5代理服务器,具备HTTP流量分析和规则匹配功能。
- 完整的SOCKS5协议支持 - 支持标准SOCKS5代理协议
- HTTP流量分析 - 深度分析HTTP请求和响应
- 规则匹配系统 - 基于正则表达式的URL匹配
- 响应修改 - 自定义HTTP响应内容和状态码
- 实时统计 - 详细的连接和请求统计信息
- 连接监控 - 实时监控所有代理连接
- HTTP请求分析 - 详细分析HTTP请求头、参数等
- 安全检测 - 检测SQL注入、XSS、路径遍历等攻击
- 流量统计 - 数据传输量、访问频率等统计
- JSON配置文件 - 灵活的配置文件系统
- 动态规则管理 - 支持启用/禁用规则
- 自定义响应 - 可配置的响应内容和HTTP头
# 进入项目目录
cd test/test3
# 编译
go build -o socks5-server
# 运行
./socks5-server首次运行时,程序会自动创建默认配置文件 config.json:
{
"server": {
"port": 1080,
"enable_https": false,
"log_level": "info",
"report_interval": 30
},
"rules": [
{
"name": "Google拦截",
"pattern": ".*google\\.com.*",
"response_body": "...",
"status_code": 200,
"headers": {
"X-Proxy-Modified": "true",
"X-Proxy-Rule": "Google拦截"
},
"enabled": true
}
]
}配置你的浏览器或应用程序使用SOCKS5代理:
- 代理服务器:
127.0.0.1 - 端口:
1080(或配置文件中设置的端口) - 协议:
SOCKS5
| 字段 | 类型 | 描述 | 默认值 |
|---|---|---|---|
port |
int | 监听端口 | 1080 |
enable_https |
bool | 是否启用HTTPS | false |
log_level |
string | 日志级别 | "info" |
report_interval |
int | 统计报告间隔(秒) | 30 |
| 字段 | 类型 | 描述 |
|---|---|---|
name |
string | 规则名称 |
pattern |
string | 正则表达式匹配模式 |
response_body |
string | 自定义响应内容 |
status_code |
int | HTTP状态码 |
headers |
object | 自定义HTTP头 |
enabled |
bool | 是否启用规则 |
# 使用curl通过代理访问
curl --socks5 127.0.0.1:1080 http://example.com以Chrome为例:
# 启动Chrome并设置SOCKS5代理
google-chrome --proxy-server="socks5://127.0.0.1:1080"编辑 config.json 文件添加新规则:
{
"name": "自定义拦截",
"pattern": ".*example\\.com.*",
"response_body": "<html><body><h1>访问被拦截</h1></body></html>",
"status_code": 403,
"headers": {
"X-Blocked-By": "SOCKS5-Proxy"
},
"enabled": true
}服务器会详细分析每个HTTP请求:
=== HTTP请求详细分析 ===
请求ID: a1b2c3d4
时间戳: 2024-01-01 12:00:00
方法: GET
URL: http://example.com/path
Host: example.com
User-Agent: Mozilla/5.0...
Content-Type: text/html
是否被修改: false
URL分析:
协议: http
主机: example.com
路径: /path
安全性分析:
⚠️ 可能的SQL注入尝试
⚠️ 可疑的User-Agent
========================
每30秒(可配置)输出详细统计:
=== 基本统计信息 ===
总连接数: 15
HTTP请求数: 42
修改响应数: 3
==================
=== 详细流量分析报告 ===
总连接数: 15
HTTP连接数: 12
HTTPS连接数: 3
总数据传输: 1048576 bytes (1.00 MB)
访问的主机 (前10个):
google.com: 8
baidu.com: 5
example.com: 2
User-Agent统计 (前5个):
Mozilla/5.0 (Chrome): 10
curl/7.68.0: 2
HTTP方法统计:
GET: 35
POST: 7
响应代码统计:
200: 30
403: 5
404: 2
========================
服务器会自动检测常见的安全威胁:
- SQL注入检测 - 检测URL中的SQL注入模式
- XSS检测 - 检测跨站脚本攻击尝试
- 路径遍历检测 - 检测目录遍历攻击
- 可疑User-Agent - 检测扫描器和攻击工具
- 敏感参数检测 - 检测密码、令牌等敏感信息
2024/01/01 12:00:00 SOCKS5服务器启动在 :1080
2024/01/01 12:00:00 成功加载 3 个规则
2024/01/01 12:00:05 记录连接: 127.0.0.1:54321 -> google.com:80 (HTTP: true)
2024/01/01 12:00:05 成功建立连接到 google.com:80 (HTTP: true, ConnID: a1b2c3d4)
2024/01/01 12:00:05 HTTP请求: GET http://google.com/
2024/01/01 12:00:05 匹配规则,修改响应: http://google.com/
2024/01/01 12:00:05 连接关闭: a1b2c3d4, 持续时间: 2.5s, 发送: 1024 bytes, 接收: 2048 bytes
支持在响应内容中使用模板变量:
<html>
<body>
<h1>访问被拦截</h1>
<p>时间: {{.Time}}</p>
<p>规则: {{.Rule}}</p>
</body>
</html>可以为每个规则设置自定义HTTP头:
{
"headers": {
"X-Proxy-Modified": "true",
"X-Proxy-Rule": "规则名称",
"X-Block-Reason": "违反访问策略"
}
}支持返回各种HTTP状态码:
200- 正常响应(自定义内容)403- 禁止访问404- 页面不存在204- 无内容(常用于广告拦截)
- 检查防火墙设置
- 确认端口未被占用
- 验证客户端代理配置
- 检查正则表达式语法
- 确认规则已启用 (
enabled: true) - 查看日志中的错误信息
- 调整
report_interval减少统计频率 - 优化正则表达式模式
- 监控内存使用情况
test/test3/
├── main.go # 主程序和SOCKS5服务器
├── analyzer.go # 流量分析器
├── config.go # 配置管理器
├── go.mod # Go模块文件
├── config.json # 配置文件(运行时生成)
└── README.md # 说明文档
- 自定义分析器 - 在
analyzer.go中添加新的分析方法 - 扩展规则系统 - 在
config.go中添加新的规则类型 - 协议支持 - 在
main.go中添加对其他协议的支持
本项目采用MIT许可证。
欢迎提交Issue和Pull Request来改进这个项目。
如有问题或建议,请通过Issue与我们联系。