Эх сурвалжийг харах

增加自定义校验条件

康鑫 7 жил өмнө
parent
commit
6b0eb1a8e6

+ 1 - 1
ProxyGetter/CheckProxy.py

@@ -12,7 +12,7 @@
 """
 __author__ = 'JHao'
 
-from getFreeProxy import GetFreeProxy
+from .getFreeProxy import GetFreeProxy
 from Util.utilFunction import verifyProxyFormat
 
 

+ 43 - 0
Util/utilFunction.py

@@ -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