validators.py 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. # -*- coding: utf-8 -*-
  2. import requests
  3. from re import findall
  4. from handler.configHandler import ConfigHandler
  5. conf = ConfigHandler()
  6. validators = []
  7. def validator(func):
  8. validators.append(func)
  9. return func
  10. @validator
  11. def formatValidator(proxy):
  12. """
  13. 检查代理格式
  14. :param proxy:
  15. :return:
  16. """
  17. verify_regex = r"\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}:\d{1,5}"
  18. _proxy = findall(verify_regex, proxy)
  19. return True if len(_proxy) == 1 and _proxy[0] == proxy else False
  20. @validator
  21. def timeOutValidator(proxy):
  22. """
  23. 检测超时
  24. :param proxy:
  25. :return:
  26. """
  27. proxies = {"http": "http://{proxy}".format(proxy=proxy), "https": "https://{proxy}".format(proxy=proxy)}
  28. headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0',
  29. 'Accept': '*/*',
  30. 'Connection': 'keep-alive',
  31. 'Accept-Language': 'zh-CN,zh;q=0.8'}
  32. try:
  33. r = requests.head(conf.verifyUrl, headers=headers, proxies=proxies, timeout=conf.verifyTimeout, verify=False)
  34. if r.status_code == 200:
  35. return True
  36. except Exception as e:
  37. pass
  38. return False
  39. @validator
  40. def customValidator(proxy):
  41. """
  42. 自定义validator函数,校验代理是否可用
  43. :param proxy:
  44. :return:
  45. """
  46. return True