go实现类似cloudflare的隐藏真实ip代理转发请求限速人机验证代码

代码语言:golang

所属分类:其他

代码描述:go实现类似cloudflare的隐藏真实ip代理转发请求限速人机验证代码,可设置url单位时间内最多访问多少次,超过就要进行验证码识别真人操作,后台真实服务器ip不对外暴露。

代码标签: go 类似 cloudflare 隐藏 真实 ip 代理 转发 请求 限速 人机 验证 代码

下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开

package main

import (
	"fmt"
	"log"
	"net/http"
	"net/http/httputil"
	"net/url"
	"sync"
	"time"

	"github.com/dchest/captcha"
	"golang.org/x/time/rate"
)

// =================================================================================================
// 配置项
// =================================================================================================

const (
	// 代理服务器监听的地址
	proxyListenAddr = ":8080"
	// 后端真实服务器的地址
	backendServerURL = "http://localhost:8081"
	// IP 在验证列表中的过期时间
	ipVerificationTimeout = 5 * time.Minute
	// 单个 URL 的访问频率: 5秒内1次
	urlRequestInterval = 5 * time.Second
)

// =================================================================================================
// IP 访问者管理
// =================================================================================================

// visitor 结构体用于存储每个 IP 对不同 URL 的速率限制器
type visitor struct {
	urlLimiters map[string]*rate.Limiter
	lastSeen    time.Time
}

// 全局变量,用于存储每个 IP 地址的访问信息
var visitors = make(map[string]*visitor)
v.........完整代码请登录后点击上方下载按钮下载查看

网友评论0