146 lines
3.9 KiB
Python
146 lines
3.9 KiB
Python
# -*- coding: utf-8 -*-
|
||
"""
|
||
-------------------------------------------------
|
||
File Name: Proxy
|
||
Description : 代理对象类型封装
|
||
Author : JHao
|
||
date: 2019/7/11
|
||
-------------------------------------------------
|
||
Change Activity:
|
||
2019/7/11: 代理对象类型封装
|
||
-------------------------------------------------
|
||
"""
|
||
__author__ = 'JHao'
|
||
|
||
import json
|
||
|
||
|
||
class Proxy(object):
|
||
|
||
def __init__(self, proxy, fail_count=0, region="", anonimity="", proxy_type="",
|
||
source="", check_count=0, last_status="", last_time=""):
|
||
self._proxy = proxy
|
||
self._fail_count = fail_count
|
||
self._region = region
|
||
self._anonimity=anonimity
|
||
self._type = proxy_type
|
||
self._source = source
|
||
self._check_count = check_count
|
||
self._last_status = last_status
|
||
self._last_time = last_time
|
||
|
||
@classmethod
|
||
def newProxyFromJson(cls, proxy_json):
|
||
"""
|
||
根据proxy属性json创建Proxy实例
|
||
:param proxy_json:
|
||
:return:
|
||
"""
|
||
proxy_dict = json.loads(proxy_json, encoding='utf-8')
|
||
return cls(proxy=proxy_dict.get("proxy", ""),
|
||
fail_count=proxy_dict.get("fail_count", 0),
|
||
region=proxy_dict.get("region", ""),
|
||
anonimity=proxy_dict.get("anonimity", ""),
|
||
proxy_type=proxy_dict.get("type", ""),
|
||
source=proxy_dict.get("source", ""),
|
||
check_count=proxy_dict.get("check_count", 0),
|
||
last_status=proxy_dict.get("last_status", ""),
|
||
last_time=proxy_dict.get("last_time", "")
|
||
)
|
||
|
||
@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 anonimity(self):
|
||
""" 透明/高匿 """
|
||
return self._anonimity
|
||
|
||
@property
|
||
def type(self):
|
||
""" HTTP/HTTPS等 """
|
||
return self._type
|
||
|
||
@property
|
||
def source(self):
|
||
""" 代理来源 """
|
||
return self._source
|
||
|
||
@property
|
||
def check_count(self):
|
||
""" 代理检测次数 """
|
||
return self._check_count
|
||
|
||
@property
|
||
def last_status(self):
|
||
""" 最后一次检测结果 1 -> 可用; 0 -> 不可用"""
|
||
return self._last_status
|
||
|
||
@property
|
||
def last_time(self):
|
||
""" 最后一次检测时间 """
|
||
return self._last_time
|
||
|
||
@property
|
||
def info_dict(self):
|
||
""" 属性字典 """
|
||
return {"proxy": self._proxy,
|
||
"fail_count": self._fail_count,
|
||
"region": self._region,
|
||
"anonimity": self._anonimity,
|
||
"type": self._type,
|
||
"source": self._source,
|
||
"check_count": self.check_count,
|
||
"last_status": self.last_status,
|
||
"last_time": self.last_time}
|
||
|
||
@property
|
||
def info_json(self):
|
||
""" 属性json格式 """
|
||
return json.dumps(self.info_dict, ensure_ascii=False)
|
||
|
||
# --- proxy method ---
|
||
@fail_count.setter
|
||
def fail_count(self, value):
|
||
self._fail_count = value
|
||
|
||
@region.setter
|
||
def region(self, value):
|
||
self._region = value
|
||
|
||
@anonimity.setter
|
||
def anonimity(self, value):
|
||
self._anonimity = value
|
||
|
||
@type.setter
|
||
def type(self, value):
|
||
self._type = value
|
||
|
||
@source.setter
|
||
def source(self, value):
|
||
self._source = value
|
||
|
||
@check_count.setter
|
||
def check_count(self, value):
|
||
self._check_count = 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
|