'Plugin entry point.
:param request: The HTTP request object.
:param response: The HTTP response object
:return: None, all results are saved in the kb.'

def grep(self, request, response):

    try:
        dp = parser_cache.dpc.get_document_parser_for(response)
    except BaseFrameworkException:
        return
    (parsed_references, _) = dp.get_references()
    analyzers = {self._analyze_SQL, self._analyze_strange}
    for ref in parsed_references:
        for token in ref.querystring.iter_tokens():
            token_name = token.get_name()
            token_value = token.get_value()
            if ((ref.uri2url(), token_name) in self._already_reported):
                continue
            for analyzer in analyzers:
                if analyzer(request, response, ref, token_name, token_value):
                    self._already_reported.add((ref.uri2url(), token_name))
                    break
