| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- # -*- coding: utf-8 -*-
- import re
- import requests
- from re import findall
- from handler.configHandler import ConfigHandler
- conf = ConfigHandler()
- validators = []
- def validator(func):
- validators.append(func)
- return func
- @validator
- def formatValidator(proxy):
- """
- 检查代理格式
- :param proxy:
- :return:
- """
- verify_regex = r"\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}:\d{1,5}"
- _proxy = findall(verify_regex, proxy)
- return True if len(_proxy) == 1 and _proxy[0] == proxy else False
- @validator
- def timeOutValidator(proxy):
- """
- 检测超时
- :param proxy:
- :return:
- """
- proxies = {"http": "http://{proxy}".format(proxy=proxy), "https": "https://{proxy}".format(proxy=proxy)}
- headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0',
- 'Accept': '*/*',
- 'Connection': 'keep-alive',
- 'Accept-Language': 'zh-CN,zh;q=0.8'}
- try:
- r = requests.head(conf.verifyUrl, headers=headers, proxies=proxies, timeout=conf.verifyTimeout, verify=False)
- if r.status_code == 200:
- return True
- except Exception as e:
- return False
- return False
- @validator
- def customValidator(proxy):
- """
- 自定义validator函数,校验代理是否可用
- :param proxy:
- :return:
- """
- try:
- proxies = {"http": "http://{proxy}".format(proxy=proxy), "https": "https://{proxy}".format(proxy=proxy)}
- r = requests.get(url='http://myip.ipip.net', proxies=proxies, timeout=conf.verifyTimeout, verify=False)
- proxies = re.findall(r'(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})',
- r.text)
- if len(proxies) > 0:
- return True
- else:
- return False
- except Exception as e:
- return False
- return False
|