|
|
@@ -76,12 +76,31 @@ def tcpConnect(proxy):
|
|
|
return True if result == 0 else False
|
|
|
|
|
|
|
|
|
+validators = []
|
|
|
+
|
|
|
+def validator(func):
|
|
|
+ validators.append(func)
|
|
|
+ return func
|
|
|
+
|
|
|
+
|
|
|
def validUsefulProxy(proxy):
|
|
|
"""
|
|
|
检验代理是否可用
|
|
|
:param proxy:
|
|
|
:return:
|
|
|
"""
|
|
|
+ for v_func in validators:
|
|
|
+ if not v_func(proxy):
|
|
|
+ return False
|
|
|
+ return True
|
|
|
+
|
|
|
+@validator
|
|
|
+def validTimeOut(proxy):
|
|
|
+ """
|
|
|
+ 检测超时
|
|
|
+ :param proxy:
|
|
|
+ :return:
|
|
|
+ """
|
|
|
if isinstance(proxy, bytes):
|
|
|
proxy = proxy.decode('utf8')
|
|
|
proxies = {"http": "http://{proxy}".format(proxy=proxy)}
|
|
|
@@ -94,3 +113,27 @@ def validUsefulProxy(proxy):
|
|
|
except Exception as e:
|
|
|
# logger.error(str(e))
|
|
|
return False
|
|
|
+
|
|
|
+@validator
|
|
|
+def validBaidubaike(proxy):
|
|
|
+ """
|
|
|
+ 检测是否能获取百度信息
|
|
|
+ :param proxy:
|
|
|
+ :return:
|
|
|
+ """
|
|
|
+ headers = {
|
|
|
+ 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.80 Safari/537.36'
|
|
|
+ }
|
|
|
+ url = "https://baike.baidu.com/"
|
|
|
+ if isinstance(proxy, bytes):
|
|
|
+ proxy = proxy.decode('utf8')
|
|
|
+ proxies = {"http": "http://{proxy}".format(proxy=proxy)}
|
|
|
+ try:
|
|
|
+ # 超过20秒的代理就不要了
|
|
|
+ r = requests.get(url, proxies=proxies, headers=headers, timeout=10, verify=False)
|
|
|
+ print(r)
|
|
|
+ if r.status_code == 200:
|
|
|
+ return True
|
|
|
+ except Exception as e:
|
|
|
+ # logger.error(str(e))
|
|
|
+ return False
|