Сайт на flask не грузит у некоторых пользователей
У некоторых пользователей не грузит сайт(белый экран),я пробывал хостить сайт,используя ngrok,а также пытался хостить на VDS
Вот код сайта:
import json
from threading import Lock
import requests
from flask import Flask, redirect, render_template, request, url_for
from pyngrok import conf, ngrok
from settings import MAIN_SETTINGS
from utils import decrypt, encrypt, logger
from waitress import serve
THREADING_LOCK = Lock()
app = Flask(__name__,static_folder='static',template_folder='templates')
#pyngrok_config = conf.PyngrokConfig(auth_token=MAIN_SETTINGS.NGROK_AUTH_TOKEN,region='eu')
#_ngrok_server=ngrok.connect(addr=5000,proto='http',pyngrok_config=pyngrok_config,bind_tls=False)
MAIN_ADDRESS ='http://x.x.x.x' #_ngrok_server.public_url
API_URL= 'None' #_ngrok_server.api_url
PASSED={}
def generate_url(url: str,id: int)-> str:
logger.debug(f'Generating url({url}) for #{id}')
url=encrypt(MAIN_SETTINGS.KEY,json.dumps({'url':url,'id':id}))
return MAIN_ADDRESS+'/captcha?id='+url
def get_passed(id:int):
global PASSED
if str(id) in PASSED.keys() and PASSED[str(id)]==True:
with THREADING_LOCK:
del PASSED[str(id)]
return True
else:
return False
@app.route("/captcha", methods=["GET"])
def captcha():
args=request.args
try:
json_obj=decrypt(MAIN_SETTINGS.KEY,args.get('id'))
_temp=json.loads(json_obj)
logger.debug(f'User {_temp["id"]} visited link')
except Exception as e:
return "Something went wrong. Please try again"
return render_template("captcha.html",site_key=MAIN_SETTINGS.HCAPTCHA_SITE_KEY,bot_name=MAIN_SETTINGS.BOT_NAME)
@app.route('/captcha',methods=['POST'])
def passed_captcha():
global PASSED
args=request.args
h_captcha_response=(request.get_data(as_text=True))
if h_captcha_response.find('h-captcha-response=')==-1:
return "Wrong captcha response"
try:
h_captcha_response=h_captcha_response[h_captcha_response.find('h-captcha-response=')+len('h-captcha-response='):]
except:
logger.warning("Invalid captcha response %s",h_captcha_response)
return "Wrong captcha response\nTry again..."
data = { 'secret':MAIN_SETTINGS.HCAPTCHA_SECRET_KEY, 'response':h_captcha_response }
try:
response=requests.post("https://hcaptcha.com/siteverify",data=data)
result=response.json()["success"] if response.status_code == 200 else False
except:
return redirect(request.base_url+request.full_path)
if result==True and args:
try:
json_obj=decrypt(MAIN_SETTINGS.KEY,args.get('id'))
_temp=json.loads(json_obj)
url=_temp['url']
if _temp['id']!=-1:
with THREADING_LOCK:
PASSED[str(_temp['id'])]=True
except Exception as e:
return "Wrong task id"
logger.debug(f'User {_temp["id"]} passed captcha')
return redirect(url)
else:
return captcha()
@app.errorhandler(404)
@app.route('/')
def main_page(exception=None):
return 'Hello from admins ;)'
def run_site():
"""
For windows you must open 80 port:
netsh advfirewall firewall add rule name="TCP Port 80" dir=in action=allow protocol=TCP localport=80
"""
serve(app,host='0.0.0.0',_quiet=True, port=80)
В чем заключается проблема?
Хочу заметить, что GET запрос от проблемных пользователей присутствует