forked from zaclys/searxng
		
	search.suspended_time settings: bug fixes
* fix type in settings.yml: replace suspend_times by suspended_times * always use delay defined in settings.yml: * HTTP status 402 and 403: read the value from settings.yml instead of using the hardcoded value of 1 day. * startpage engine: CAPTCHA suspend the engine for one day instead of one week
This commit is contained in:
		
							parent
							
								
									6b71721ce8
								
							
						
					
					
						commit
						37addec69e
					
				
					 4 changed files with 11 additions and 7 deletions
				
			
		| 
						 | 
				
			
			@ -62,8 +62,7 @@ sc_code = ''
 | 
			
		|||
def raise_captcha(resp):
 | 
			
		||||
 | 
			
		||||
    if str(resp.url).startswith('https://www.startpage.com/sp/captcha'):
 | 
			
		||||
        # suspend CAPTCHA for 7 days
 | 
			
		||||
        raise SearxEngineCaptchaException(suspended_time=7 * 24 * 3600)
 | 
			
		||||
        raise SearxEngineCaptchaException()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def get_sc_code(headers):
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -70,8 +70,15 @@ class SearxEngineAccessDeniedException(SearxEngineResponseException):
 | 
			
		|||
    """The website is blocking the access"""
 | 
			
		||||
 | 
			
		||||
    SUSPEND_TIME_SETTING = "search.suspended_times.SearxEngineAccessDenied"
 | 
			
		||||
    """This settings contains the default suspended time"""
 | 
			
		||||
 | 
			
		||||
    def __init__(self, suspended_time=None, message='Access denied'):
 | 
			
		||||
    def __init__(self, suspended_time: int = None, message: str = 'Access denied'):
 | 
			
		||||
        """Generic exception to raise when an engine denies access to the results
 | 
			
		||||
 | 
			
		||||
        Args:
 | 
			
		||||
            suspended_time (int, optional): How long the engine is going to be suspended in second. Defaults to None.
 | 
			
		||||
            message (str, optional): Internal message. Defaults to 'Access denied'.
 | 
			
		||||
        """
 | 
			
		||||
        suspended_time = suspended_time or self._get_default_suspended_time()
 | 
			
		||||
        super().__init__(message + ', suspended_time=' + str(suspended_time))
 | 
			
		||||
        self.suspended_time = suspended_time
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -72,9 +72,7 @@ def raise_for_httperror(resp):
 | 
			
		|||
    if resp.status_code and resp.status_code >= 400:
 | 
			
		||||
        raise_for_captcha(resp)
 | 
			
		||||
        if resp.status_code in (402, 403):
 | 
			
		||||
            raise SearxEngineAccessDeniedException(
 | 
			
		||||
                message='HTTP error ' + str(resp.status_code), suspended_time=3600 * 24
 | 
			
		||||
            )
 | 
			
		||||
            raise SearxEngineAccessDeniedException(message='HTTP error ' + str(resp.status_code))
 | 
			
		||||
        if resp.status_code == 429:
 | 
			
		||||
            raise SearxEngineTooManyRequestsException()
 | 
			
		||||
        resp.raise_for_status()
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -45,7 +45,7 @@ search:
 | 
			
		|||
  ban_time_on_fail: 5
 | 
			
		||||
  # max ban time in seconds after engine errors
 | 
			
		||||
  max_ban_time_on_fail: 120
 | 
			
		||||
  suspend_times:
 | 
			
		||||
  suspended_times:
 | 
			
		||||
    # Engine suspension time after error (in seconds; set to 0 to disable)
 | 
			
		||||
    # For error "Access denied" and "HTTP error [402, 403]"
 | 
			
		||||
    SearxEngineAccessDenied: 86400
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		
		Reference in a new issue