'Searches for new Url\'s using fuzzing.
:param fuzzable_request: A fuzzable_request instance that contains
(among other things) the URL to test.'

def crawl(self, fuzzable_request):

    url = fuzzable_request.get_url()
    self._headers = Headers([('Referer', url.url_string)])
    if self._first_time:
        self._verify_head_enabled(url)
        self._first_time = False
    url = url.uri2url()
    self._seen.add(url)
    self._verify_head_enabled(url)
    if self._head_enabled():
        response = self._uri_opener.HEAD(url, cache=True, headers=self._headers)
    else:
        response = self._uri_opener.GET(url, cache=True, headers=self._headers)
    if (response.is_text_or_html() or self._fuzz_images):
        mutants_chain = chain(self._mutate_by_appending(url), self._mutate_path(url), self._mutate_file_type(url), self._mutate_domain_name(url))
        url_repeater = repeat(url)
        args = izip(url_repeater, mutants_chain)
        self.worker_pool.map_multi_args(self._do_request, args)
