146 lines
3.9 KiB
Python
Raw Normal View History

2025-05-28 19:16:17 +08:00
# -*- 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