|
|
@@ -0,0 +1,104 @@
|
|
|
+# -*- coding: utf-8 -*-
|
|
|
+"""
|
|
|
+-------------------------------------------------
|
|
|
+ File Name: Proxy
|
|
|
+ Description : 代理对象类型封装
|
|
|
+ Author : JHao
|
|
|
+ date: 2019/7/11
|
|
|
+-------------------------------------------------
|
|
|
+ Change Activity:
|
|
|
+ 2019/7/11: 代理对象类型封装
|
|
|
+-------------------------------------------------
|
|
|
+"""
|
|
|
+__author__ = 'JHao'
|
|
|
+
|
|
|
+
|
|
|
+class Proxy(object):
|
|
|
+
|
|
|
+ def __init__(self, proxy):
|
|
|
+ if isinstance(proxy, basestring):
|
|
|
+ self._proxy = proxy
|
|
|
+ self._fail_count = 0
|
|
|
+ self._region = ""
|
|
|
+ self._type = ""
|
|
|
+ self._last_status = ""
|
|
|
+ self._last_time = ""
|
|
|
+
|
|
|
+ elif isinstance(proxy, dict):
|
|
|
+ self._proxy = proxy.get("proxy")
|
|
|
+ self._fail_count = proxy.get("fail_count")
|
|
|
+ self._region = proxy.get("region")
|
|
|
+ self._type = proxy.get("type")
|
|
|
+ self._last_status = proxy.get("last_status")
|
|
|
+ self._last_time = proxy.get("last_time")
|
|
|
+
|
|
|
+ else:
|
|
|
+ raise TypeError("proxy arg invalid")
|
|
|
+
|
|
|
+ @property
|
|
|
+ def proxy(self):
|
|
|
+ """ 代理 ip:port """
|
|
|
+ return self._proxy
|
|
|
+
|
|
|
+ @property
|
|
|
+ def fail_count(self):
|
|
|
+ """ 检测失败次数 """
|
|
|
+ return self._fail_count
|
|
|
+
|
|
|
+ @property
|
|
|
+ def region(self):
|
|
|
+ """ 地理位置(国家/城市) """
|
|
|
+ return self._region
|
|
|
+
|
|
|
+ @property
|
|
|
+ def type(self):
|
|
|
+ """ 透明/匿名/高匿 """
|
|
|
+ return self._type
|
|
|
+
|
|
|
+ @property
|
|
|
+ def last_status(self):
|
|
|
+ """ 最后一次检测结果 """
|
|
|
+ return self._last_status
|
|
|
+
|
|
|
+ @property
|
|
|
+ def last_time(self):
|
|
|
+ """ 最后一次检测时间 """
|
|
|
+ return self._last_time
|
|
|
+
|
|
|
+ # --- proxy method ---
|
|
|
+ @fail_count.setter
|
|
|
+ def fail_count(self, value):
|
|
|
+ self._fail_count = value
|
|
|
+
|
|
|
+ @region.setter
|
|
|
+ def region(self, value):
|
|
|
+ self._region = value
|
|
|
+
|
|
|
+ @type.setter
|
|
|
+ def type(self, value):
|
|
|
+ self._type = value
|
|
|
+
|
|
|
+ @last_status.setter
|
|
|
+ def last_status(self, value):
|
|
|
+ self._last_status = value
|
|
|
+
|
|
|
+ @last_time.setter
|
|
|
+ def last_time(self, value):
|
|
|
+ self._last_time = value
|
|
|
+
|
|
|
+
|
|
|
+def proxy2Json(proxy):
|
|
|
+ return {"proxy": proxy.proxy,
|
|
|
+ "fail_count": proxy.fail_count,
|
|
|
+ "region": proxy.region,
|
|
|
+ "type": proxy.type,
|
|
|
+ "last_status": proxy.last_status,
|
|
|
+ "last_time": proxy.last_time}
|
|
|
+
|
|
|
+
|
|
|
+if __name__ == '__main__':
|
|
|
+ p = Proxy("127.0.0.1:8080")
|
|
|
+
|
|
|
+ import json
|
|
|
+
|
|
|
+ print json.dumps(p, default=proxy2Json)
|