Neural Network Model for solving captchas in Python
No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.

47 líneas
1.6KB

  1. from fastapi import FastAPI, HTTPException
  2. from pydantic import BaseModel
  3. from typing import Optional
  4. from fastapi.middleware.cors import CORSMiddleware
  5. import threading
  6. # Suponha que quebrar_captcha_base64 está definido em outro módulo ou arquivo
  7. from solve_captcha import quebrar_captcha_base64
  8. app = FastAPI()
  9. app.add_middleware(
  10. CORSMiddleware,
  11. allow_origins=["*"], # Ajuste conforme necessário
  12. allow_credentials=True,
  13. allow_methods=["*"], # Ajuste conforme necessário
  14. allow_headers=["*"],
  15. )
  16. # Criando um bloqueio para gerenciamento de concorrência
  17. lock = threading.Lock()
  18. class CaptchaRequest(BaseModel):
  19. captchafile: str
  20. authtoken: str
  21. @app.post("/solve_captcha")
  22. async def solve_captcha(request: CaptchaRequest):
  23. expected_token = "j7MgdTy4LX05RpE1XY0ykLTexu9LuOE4zg5AEMNymL6LAgCUNN8JGjM5wu26FDGV4j0Xz3km8ra51c3ihToa3fj48XpcsWr45g043bLVQA1sTBkJP4j823DNX67mbjqNR8p117sU580153Id0IavORjkCXRP"
  24. if request.authtoken != expected_token:
  25. # Se o token não corresponder, retorne erro 401 Unauthorized
  26. raise HTTPException(status_code=401, detail="Unauthorized")
  27. if not request.captchafile:
  28. raise HTTPException(status_code=400, detail="captchafile is required")
  29. try:
  30. lock.acquire()
  31. resultado_captcha = quebrar_captcha_base64(request.captchafile)
  32. lock.release()
  33. return {"captcha": "", "text": resultado_captcha, "is_correct": True, "status": 200}
  34. except Exception as e:
  35. lock.release()
  36. raise HTTPException(status_code=500, detail=str(e))