Proxy.py 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. # -*- coding: utf-8 -*-
  2. """
  3. -------------------------------------------------
  4. File Name: Proxy
  5. Description : 代理对象类型封装
  6. Author : JHao
  7. date: 2019/7/11
  8. -------------------------------------------------
  9. Change Activity:
  10. 2019/7/11: 代理对象类型封装
  11. -------------------------------------------------
  12. """
  13. __author__ = 'JHao'
  14. class Proxy(object):
  15. def __init__(self, proxy):
  16. if isinstance(proxy, str):
  17. self._proxy = proxy
  18. self._fail_count = 0
  19. self._region = ""
  20. self._type = ""
  21. self._last_status = ""
  22. self._last_time = ""
  23. elif isinstance(proxy, dict):
  24. self._proxy = proxy.get("proxy")
  25. self._fail_count = proxy.get("fail_count")
  26. self._region = proxy.get("region")
  27. self._type = proxy.get("type")
  28. self._last_status = proxy.get("last_status")
  29. self._last_time = proxy.get("last_time")
  30. else:
  31. raise TypeError("proxy arg invalid")
  32. @property
  33. def proxy(self):
  34. """ 代理 ip:port """
  35. return self._proxy
  36. @property
  37. def fail_count(self):
  38. """ 检测失败次数 """
  39. return self._fail_count
  40. @property
  41. def region(self):
  42. """ 地理位置(国家/城市) """
  43. return self._region
  44. @property
  45. def type(self):
  46. """ 透明/匿名/高匿 """
  47. return self._type
  48. @property
  49. def last_status(self):
  50. """ 最后一次检测结果 """
  51. return self._last_status
  52. @property
  53. def last_time(self):
  54. """ 最后一次检测时间 """
  55. return self._last_time
  56. # --- proxy method ---
  57. @fail_count.setter
  58. def fail_count(self, value):
  59. self._fail_count = value
  60. @region.setter
  61. def region(self, value):
  62. self._region = value
  63. @type.setter
  64. def type(self, value):
  65. self._type = value
  66. @last_status.setter
  67. def last_status(self, value):
  68. self._last_status = value
  69. @last_time.setter
  70. def last_time(self, value):
  71. self._last_time = value
  72. def proxy2Json(proxy):
  73. return {"proxy": proxy.proxy,
  74. "fail_count": proxy.fail_count,
  75. "region": proxy.region,
  76. "type": proxy.type,
  77. "last_status": proxy.last_status,
  78. "last_time": proxy.last_time}
  79. if __name__ == '__main__':
  80. p = Proxy("127.0.0.1:8080")
  81. import json
  82. print(json.dumps(p, default=proxy2Json))