proxy.py 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  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. import json
  15. class Proxy(object):
  16. def __init__(self, proxy, fail_count=0, region="", proxy_type="",
  17. source="", check_count=0, last_status="", last_time=""):
  18. self._proxy = proxy
  19. self._fail_count = fail_count
  20. self._region = region
  21. self._type = proxy_type
  22. self._source = source
  23. self._check_count = check_count
  24. self._last_status = last_status
  25. self._last_time = last_time
  26. @classmethod
  27. def createFromJson(cls, proxy_json):
  28. """
  29. 根据proxy属性json创建Proxy实例
  30. :param proxy_json:
  31. :return:
  32. """
  33. proxy_dict = json.loads(proxy_json)
  34. return cls(proxy=proxy_dict.get("proxy", ""),
  35. fail_count=proxy_dict.get("fail_count", 0),
  36. region=proxy_dict.get("region", ""),
  37. proxy_type=proxy_dict.get("type", ""),
  38. source=proxy_dict.get("source", ""),
  39. check_count=proxy_dict.get("check_count", 0),
  40. last_status=proxy_dict.get("last_status", ""),
  41. last_time=proxy_dict.get("last_time", "")
  42. )
  43. @property
  44. def proxy(self):
  45. """ 代理 ip:port """
  46. return self._proxy
  47. @property
  48. def fail_count(self):
  49. """ 检测失败次数 """
  50. return self._fail_count
  51. @property
  52. def region(self):
  53. """ 地理位置(国家/城市) """
  54. return self._region
  55. @property
  56. def type(self):
  57. """ 透明/匿名/高匿 """
  58. return self._type
  59. @property
  60. def source(self):
  61. """ 代理来源 """
  62. return self._source
  63. @property
  64. def check_count(self):
  65. """ 代理检测次数 """
  66. return self._check_count
  67. @property
  68. def last_status(self):
  69. """ 最后一次检测结果 1 -> 可用; 0 -> 不可用"""
  70. return self._last_status
  71. @property
  72. def last_time(self):
  73. """ 最后一次检测时间 """
  74. return self._last_time
  75. @property
  76. def to_dict(self):
  77. """ 属性字典 """
  78. return {"proxy": self._proxy,
  79. "fail_count": self._fail_count,
  80. "region": self._region,
  81. "type": self._type,
  82. "source": self._source,
  83. "check_count": self.check_count,
  84. "last_status": self.last_status,
  85. "last_time": self.last_time}
  86. @property
  87. def to_json(self):
  88. """ 属性json格式 """
  89. return json.dumps(self.to_dict, ensure_ascii=False)
  90. # --- proxy method ---
  91. @fail_count.setter
  92. def fail_count(self, value):
  93. self._fail_count = value
  94. @region.setter
  95. def region(self, value):
  96. self._region = value
  97. @type.setter
  98. def type(self, value):
  99. self._type = value
  100. @source.setter
  101. def source(self, value):
  102. self._source = value
  103. @check_count.setter
  104. def check_count(self, value):
  105. self._check_count = value
  106. @last_status.setter
  107. def last_status(self, value):
  108. self._last_status = value
  109. @last_time.setter
  110. def last_time(self, value):
  111. self._last_time = value