def _is_blocked(self, request_url: QUrl, first_party_url: QUrl = None) -> bool: """Check whether the given request is blocked.""" if not self.enabled: return False if first_party_url is not None and not first_party_url.isValid(): first_party_url = None qtutils.ensure_valid(request_url) if not config.get("content.blocking.enabled", url=first_party_url): return False if blockutils.is_whitelisted_url(request_url): return False host = request_url.host() if config.get("content.blocking.hosts.block_subdomains"): return any(hostname in self._blocked_hosts or hostname in self._config_blocked_hosts for hostname in urlutils.widened_hostnames(host)) else: return (host in self._blocked_hosts or host in self._config_blocked_hosts)
def _is_blocked( self, request_url: QUrl, first_party_url: Optional[QUrl] = None, resource_type: Optional[interceptor.ResourceType] = None, ) -> bool: """Check whether the given request is blocked.""" if not self.enabled: # Do nothing if `content.blocking.method` is not set to enable the # use of this adblocking module. return False if ( first_party_url is None or not first_party_url.isValid() or first_party_url.scheme() == "file" ): # FIXME: It seems that when `first_party_url` is None, every URL # I try is blocked. This may have been a result of me incorrectly # using the upstream library, or an upstream bug. For now we don't # block any request with `first_party_url=None`. return False qtutils.ensure_valid(request_url) if not config.get("content.blocking.enabled", url=first_party_url): # Do nothing if adblocking is disabled for this site. return False result = self._engine.check_network_urls( request_url.toString(), first_party_url.toString(), _resource_type_to_string(resource_type), ) if not result.matched: return False elif result.exception is not None and not result.important: # Exception is not `None` when the blocker matched on an exception # rule. Effectively this means that there was a match, but the # request should not be blocked. # # An `important` match means that exceptions should not apply and # no further checking is necessary--the request should be blocked. logger.debug( "Excepting %s from being blocked by %s because of %s", request_url.toDisplayString(), result.filter, result.exception, ) return False elif blockutils.is_whitelisted_url(request_url): logger.debug( "Request to %s is whitelisted, thus not blocked", request_url.toDisplayString(), ) return False return True
def _is_blocked(self, request_url: QUrl, first_party_url: QUrl = None) -> bool: """Check whether the given request is blocked.""" if first_party_url is not None and not first_party_url.isValid(): first_party_url = None qtutils.ensure_valid(request_url) if not config.get('content.host_blocking.enabled', url=first_party_url): return False host = request_url.host() return ((host in self._blocked_hosts or host in self._config_blocked_hosts) and not _is_whitelisted_url(request_url))