-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathproxy.py
174 lines (145 loc) · 4.8 KB
/
proxy.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
# -*- coding: utf-8 -*-
"""
-------------------------------------------------
File Name: Proxy
Description : 代理对象类型封装
Author : 007x
date: 2019/7/11
-------------------------------------------------
Change Activity:
2019/7/11: 代理对象类型封装
-------------------------------------------------
"""
__author__ = '007x'
import json
class Proxy(object):
def __init__(self, proxy, fail_count=0, region="", anonymous="",
source="", check_count=0, last_status="", last_time="", create_time="",
https=False, resp_time=0, proxy_type=""):
self._proxy = proxy
self._fail_count = fail_count
self._region = region
self._anonymous = anonymous
self._source = source.split('/')
self._check_count = check_count
self._last_status = last_status
self._create_time = create_time
self._last_time = last_time
self._https = https
self._resp_time = resp_time
self._proxy_type = proxy_type
@classmethod
def createFromJson(cls, proxy_json):
_dict = json.loads(proxy_json)
return cls(proxy=_dict.get("proxy", ""),
fail_count=_dict.get("fail_count", 0),
region=_dict.get("region", ""),
anonymous=_dict.get("anonymous", ""),
source=_dict.get("source", ""),
check_count=_dict.get("check_count", 0),
last_status=_dict.get("last_status", ""),
create_time=_dict.get("create_time", ""),
last_time=_dict.get("last_time", ""),
https=_dict.get("https", False),
resp_time= _dict.get("resp_time", 0),
proxy_type= _dict.get("proxy_type", "")
)
@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 anonymous(self):
""" 匿名 """
return self._anonymous
@property
def source(self):
""" 代理来源 """
return '/'.join(self._source)
@property
def check_count(self):
""" 代理检测次数 """
return self._check_count
@property
def last_status(self):
""" 最后一次检测结果 True -> 可用; False -> 不可用"""
return self._last_status
@property
def create_time(self):
""" 第一次检测时间 """
return self._create_time
@property
def last_time(self):
""" 最后一次检测时间 """
return self._last_time
@property
def https(self):
""" 是否支持https """
return self._https
@property
def resp_time(self):
""" 响应时间 """
return self._resp_time
@property
def proxy_type(self):
""" 代理类型 """
return self._proxy_type
@property
def to_dict(self):
""" 属性字典 """
return {"proxy": self.proxy,
"https": self.https,
"fail_count": self.fail_count,
"region": self.region,
"anonymous": self.anonymous,
"source": self.source,
"check_count": self.check_count,
"last_status": self.last_status,
"create_time": self.create_time,
"last_time": self.last_time,
"resp_time": self.resp_time,
"proxy_type": self.proxy_type}
@property
def to_json(self):
""" 属性json格式 """
return json.dumps(self.to_dict, ensure_ascii=False)
@fail_count.setter
def fail_count(self, value):
self._fail_count = 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
@create_time.setter
def create_time(self, value):
self._create_time = value
@last_time.setter
def last_time(self, value):
self._last_time = value
@https.setter
def https(self, value):
self._https = value
@region.setter
def region(self, value):
self._region = value
@resp_time.setter
def resp_time(self, value):
self._resp_time = value
@proxy_type.setter
def proxy_type(self, value):
self._proxy_type = value
def add_source(self, source_str, proxy_type=""):
if source_str:
self._source.append(source_str)
self._source = list(set(self._source))
self._proxy_type = proxy_type