captcha_service.py 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. """
  2. @ Author: Mr.Hat
  3. @ Date: 2024/3/30 14:05
  4. @ Description:
  5. @ History:
  6. """
  7. import asyncio
  8. import captchatools
  9. from data.config import (
  10. TWO_CAPTCHA_API_KEY,
  11. ANTICAPTCHA_API_KEY,
  12. CAPMONSTER_API_KEY,
  13. CAPSOLVER_API_KEY,
  14. CAPTCHAAI_API_KEY,
  15. CAPTCHA_PARAMS
  16. )
  17. class CaptchaService:
  18. def __init__(self):
  19. self.SERVICE_API_MAP = {
  20. "2captcha": TWO_CAPTCHA_API_KEY,
  21. "anticaptcha": ANTICAPTCHA_API_KEY,
  22. "capmonster": CAPMONSTER_API_KEY,
  23. "capsolver": CAPSOLVER_API_KEY,
  24. "captchaai": CAPTCHAAI_API_KEY,
  25. }
  26. def get_captcha_token(self):
  27. captcha_config = self._parse_captcha_type()
  28. solver = captchatools.new_harvester(**captcha_config, **CAPTCHA_PARAMS)
  29. return solver.get_token()
  30. def _parse_captcha_type(self):
  31. for service, api_key in self.SERVICE_API_MAP.items():
  32. if api_key:
  33. return {"solving_site": service, "api_key": api_key}
  34. raise ValueError("No valid captcha solving service API key found")
  35. async def get_captcha_token_async(self):
  36. return await asyncio.to_thread(self.get_captcha_token)