'The parameters are:
* Newly found URL
* The FuzzableRequest instance which generated the response where
the new URL was found
* The HTTPResponse generated by the FuzzableRequest
* Boolean indicating if we trust this reference or not
This method GET\'s every new link and parses it in order to get
new links and forms.'

def _verify_reference(self, reference, original_request, original_response, possibly_broken, be_recursive=True):

    referer = original_response.get_url().base_url().url_string
    headers = Headers([('Referer', referer)])
    resp = self._uri_opener.GET(reference, cache=True, headers=headers, grep=False)
    if is_404(resp):
        if be_recursive:
            for args in self._urls_to_verify_generator(resp, original_request):
                self._verify_reference(be_recursive=False, *args)
        if ((not possibly_broken) and (resp.get_code() not in self.UNAUTH_FORBID)):
            t = (resp.get_url(), original_request.get_uri())
            self._broken_links.add(t)
    else:
        msg = '[web_spider]    Sending    link    to    w3af    core:    "%s"'
        om.out.debug((msg % reference))
        fuzz_req = FuzzableRequest(reference, headers=headers)
        cookie = Cookie.from_http_response(original_response)
        fuzz_req.set_referer(referer)
        fuzz_req.set_cookie(cookie)
        self.output_queue.put(fuzz_req)
