python+flask实现类似cloudflare隐藏真实ip代理转发请求限速人机验证代码
代码语言:python
所属分类:其他
代码描述:python+flask实现类似cloudflare隐藏真实ip代理转发请求限速人机验证代码,可设置url单位时间内最多访问多少次,超过就要进行验证码识别真人操作,后台真实服务器ip不对外暴露,针对单个url限制。
代码标签: python 类似 flask cloudflare 隐藏 真实 ip 代理 转发 请求 限速 人
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
#!/usr/local/python3/bin/python3
# -*- coding: utf-8 -*
import base64
import random
import string
import threading
import time
from urllib.parse import quote, urlparse
import requests
from captcha.image import ImageCaptcha
from flask import Flask, Response, redirect, render_template_string, request, session
# =================================================================================================
# 配置项
# =================================================================================================
PROXY_HOST = "127.0.0.1"
PROXY_PORT = 8089
BACKEND_URL = "http://127.0.0.1:8081"
RATE_LIMIT_SECONDS = 5
VERIFICATION_TIMEOUT_MINUTES = 5
CLEANUP_INTERVAL_SECONDS = 60
# =================================================================================================
# 全局状态与 Flask 应用初始化
# =================================================================================================
visitors = {} # { "ip": { "url_path": last_access_time } }
visitors_lock = threading.Lock()
needs_verification = {} # { "ip": { "url_path": verification_start_time } }
verification_lock = threading.Lock()
app = Flask(__name__)
app.secret_key = 'url-isolated-captcha-secret-key'
app.config['SESSION_COOKIE_NAME'] = 'X-BFW-TOKEN'
# =================================================================================================
# 工具函数
# =================================================================================================
def check_rate_limit(ip, url_path):
with visitors_lock:
current_time = time.time()
if ip not in visitors:
visitors[ip] = {}
last_access_time = visitors[ip].get(url_path, 0)
if current_time - last_access_time < RATE_LIMIT_SECONDS:
return False
visitors[ip][url_path.........完整代码请登录后点击上方下载按钮下载查看















网友评论0