{"record":{"id":"fcdb29da5e664e8d","repo":"projectdiscovery/subfinder","slug":"encountered-error-v-note-if-you-get-a-limit-h","errorCode":null,"errorMessage":"encountered error: %v; note: if you get a 'limit has been reached' error, head over to https://devportal.redhuntlabs.com","messagePattern":"encountered error: (.+?); note: if you get a 'limit has been reached' error, head over to https://devportal\\.redhuntlabs\\.com","errorType":"http","errorClass":null,"httpStatus":null,"severity":"error","filePath":"pkg/subscraping/sources/redhuntlabs/redhuntlabs.go","lineNumber":68,"sourceCode":"\t\t\treturn\n\t\t}\n\n\t\t// Honor an optional per-source result limit (0 = no limit) so a single\n\t\t// domain can't drain an API quota by paginating to the end.\n\t\tmaxResults := session.MaxResults\n\n\t\trandomApiInfo := strings.Split(randomApiKey, \":\")\n\t\tif len(randomApiInfo) != 3 {\n\t\t\ts.skipped = true\n\t\t\treturn\n\t\t}\n\t\tbaseUrl := randomApiInfo[0] + \":\" + randomApiInfo[1]\n\t\trequestHeaders := map[string]string{\"X-BLOBR-KEY\": randomApiInfo[2], \"User-Agent\": \"subfinder\"}\n\t\tgetUrl := fmt.Sprintf(\"%s?domain=%s&page=1&page_size=%d\", baseUrl, domain, pageSize)\n\t\ts.requests++\n\t\tresp, err := session.Get(ctx, getUrl, \"\", requestHeaders)\n\t\tif err != nil {\n\t\t\tresults <- subscraping.Result{Source: s.Name(), Type: subscraping.Error, Error: fmt.Errorf(\"encountered error: %v; note: if you get a 'limit has been reached' error, head over to https://devportal.redhuntlabs.com\", err)}\n\t\t\tsession.DiscardHTTPResponse(resp)\n\t\t\ts.errors++\n\t\t\treturn\n\t\t}\n\t\tvar response Response\n\t\terr = jsoniter.NewDecoder(resp.Body).Decode(&response)\n\t\tif err != nil {\n\t\t\tresults <- subscraping.Result{Source: s.Name(), Type: subscraping.Error, Error: err}\n\t\t\tsession.DiscardHTTPResponse(resp)\n\t\t\ts.errors++\n\t\t\treturn\n\t\t}\n\n\t\tsession.DiscardHTTPResponse(resp)\n\t\tif response.Metadata.ResultCount > pageSize {\n\t\t\ttotalPages := (response.Metadata.ResultCount + pageSize - 1) / pageSize\n\t\t\tfor page := 1; page <= totalPages; page++ {\n\t\t\t\tselect {","sourceCodeStart":50,"sourceCodeEnd":86,"githubUrl":"https://github.com/projectdiscovery/subfinder/blob/7a0b91f0fac01b62c65328bd771a3560ae611d6a/pkg/subscraping/sources/redhuntlabs/redhuntlabs.go#L50-L86","documentation":"RedHunt Labs' asset-search API GET failed at the transport level; the source wraps the underlying error and points users at the devportal because the most common root cause is an exhausted API limit rather than a pure network fault. Enumeration for this source stops.","triggerScenarios":"session.Get(ctx, getUrl, ...) returns an error on the first (page=1) request to the RedHunt Labs endpoint — DNS failure, TLS error, connection refused/reset, or proxy interference with the X-BLOBR-KEY authenticated request.","commonSituations":"Free RedHunt Labs devportal key that has hit its request limit (transport-level rejection); missing or malformed host:port:key entry in provider config; corporate proxy blocking the API host.","solutions":["Register/renew your key at https://devportal.redhuntlabs.com and check its quota","Verify the provider config entry is host:port:key with all three parts correct","Read the wrapped %v error — connection-refused/timeouts indicate network or wrong host:port","Test connectivity to the API host directly (curl with the same X-BLOBR-KEY header)","Check proxy env vars (HTTP_PROXY/HTTPS_PROXY) aren't blocking the request"],"exampleFix":null,"handlingStrategy":"validation","validationCode":"parts := strings.Split(providerEntry, \":\")\nif len(parts) != 3 { return errors.New(\"redhuntlabs entry must be host:port:key\") }\nif parts[2] == \"\" { return errors.New(\"X-BLOBR-KEY missing\") }","typeGuard":null,"tryCatchPattern":"resp, err := session.Get(ctx, getUrl, \"\", requestHeaders)\nif err != nil {\n\tvar nerr net.Error\n\tif errors.As(err, &nerr) && nerr.Timeout() { return retryWithBackoff(3) }\n\treturn fmt.Errorf(\"check key/quota at devportal.redhuntlabs.com: %w\", err)\n}","preventionTips":["Register a valid key at devportal.redhuntlabs.com and track its quota","Format provider config strictly as host:port:key","Verify proxy settings don't block the API host","Retry on timeouts, fix config on connection-refused"],"tags":["go","network","redhuntlabs"],"backgroundTag":"http-request-failed","analyzedSha":"7a0b91f0fac01b62c65328bd771a3560ae611d6a","analyzedAt":"2026-09-06T23:52:02.109Z","contentChangedAt":"2026-09-06T23:52:02.109Z","schemaVersion":2},"datasetVersion":"2026-09-16T09:17:16.951Z"}