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