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
|