{"record":{"id":"2cd2eb8ec0a746c1","repo":"wpscanteam/wpscan","slug":"unable-to-get-response-effective-url-status","errorCode":null,"errorMessage":"Unable to get #{response.effective_url} (status: #{response.code})","messagePattern":"Unable to get #(.+?) \\(status: #(.+?)\\)","errorType":"exception","errorClass":"WPScan::Error::Download","httpStatus":null,"severity":"error","filePath":"lib/wpscan/db/updater.rb","lineNumber":138,"sourceCode":"          params.delete(:proxyuserpwd)\n        end\n\n        params\n      end\n\n      # @return [ String ] The raw file URL associated with the given filename\n      def remote_file_url(filename)\n        host = enterprise_file?(filename) ? ENTERPRISE_HOST : DEFAULT_HOST\n\n        \"https://#{host}/#{filename}\"\n      end\n\n      # @return [ String ] The checksum of the associated remote filename\n      def remote_file_checksum(filename)\n        url = \"#{remote_file_url(filename)}.sha512\"\n\n        res = Typhoeus.get(url, request_params(filename))\n        raise Error::Download, res if res.timed_out? || res.code != 200\n\n        res.body.chomp\n      end\n\n      # @return [ String ]\n      def local_file_path(filename)\n        repo_directory.join(filename.to_s).to_s\n      end\n\n      def local_file_checksum(filename)\n        Digest::SHA512.file(local_file_path(filename)).hexdigest\n      end\n\n      # @return [ String ]\n      def backup_file_path(filename)\n        repo_directory.join(\"#{filename}.back\").to_s\n      end\n","sourceCodeStart":120,"sourceCodeEnd":156,"githubUrl":"https://github.com/wpscanteam/wpscan/blob/62c9cef471de90095f6b42245a11d0f8172d19c9/lib/wpscan/db/updater.rb#L120-L156","documentation":"WPScan::Error::Download raised in Updater#remote_file_checksum (lib/wpscan/db/updater.rb:137-138) when the GET of https://data.wpscan.org/<file>.sha512 (or https://enterprise-data.wpscan.org/... for enterprise dumps) times out or returns a non-200 status. The error object wraps the Typhoeus response; its to_s (lib/wpscan/errors/http.rb:32-46) prints 'Unable to get <effective_url> (status: N)' - or the return_message when code is 0 - and, for data.wpscan.org, appends the Cloudflare Ray ID and support links. It fires during 'wpscan --update' and during the automatic DB refresh at scan start (Updater#update).","triggerScenarios":"Fetching any of the FILES checksums (metadata.json.sha512, wp_fingerprints.json.sha512, etc.) through a broken proxy (request_params merges the CLI --proxy settings), DNS/firewall blocking data.wpscan.org, a 403 from Cloudflare/WAF, or an enterprise dump checksum request with an invalid/expired --enterprise-db-token (X-DB-JSON-AUTH rejected by enterprise-data.wpscan.org, typically 401/403).","commonSituations":"Corporate egress proxies blocking CDN hosts; scans inside locked-down Docker/K8s networks with no NAT; expired WPSCAN_ENTERPRISE_DB_TOKEN env var; Cloudflare incidents (check status.wpscan.com); local clock/MTU issues causing the 600s timeout to hit.","solutions":["Retry after a moment - transient CDN/network glitches are the most common cause","Verify reachability: curl -I https://data.wpscan.org/metadata.json.sha512 (through the same proxy wpscan uses)","For enterprise files, check the token: unset WPSCAN_ENTERPRISE_DB_TOKEN or pass a valid --enterprise-db-token, since a bad token makes every enterprise fetch 401/403","If it persists, check https://status.wpscan.com/ and contact WPScan support including the Cloudflare Ray ID printed in the error"],"exampleFix":"# before\n$ wpscan --update\n# => Unable to get https://data.wpscan.org/wp_fingerprints.json.sha512 (status: 403)\n\n# after (proxy was stripping the User-Agent)\n$ wpscan --update --proxy http://corporate-proxy:8080\n# or, once the network path is fixed\n$ wpscan --update  # => databases updated","handlingStrategy":"retry","validationCode":"# Preflight the checksum host before running the updater\nrequire 'typhoeus'\nres = Typhoeus.get('https://data.wpscan.org/metadata.json.sha512', timeout: 30)\nabort \"DB host unreachable (#{res.code})\" unless res.code == 200","typeGuard":null,"tryCatchPattern":"begin\n  WPScan::DB::Updater.new(db_dir).update\nrescue WPScan::Error::Download => e\n  if (tries += 1) <= 3 && e.response.code != 401 && e.response.code != 403\n    sleep(2**tries)\n    retry # transient CDN/network failures usually clear\n  end\n  warn e # includes Cloudflare Ray ID + support links for data.wpscan.org\nend","preventionTips":["Verify proxy/firewall egress to data.wpscan.org (and enterprise-data.wpscan.org when using an enterprise token) before scheduling scans","Keep WPSCAN_ENTERPRISE_DB_TOKEN fresh; a dead token turns every enterprise checksum fetch into 401/403","Run 'wpscan --update' on a schedule so scan-time updates are small and rarely hit timeouts"],"tags":["network","download","database-update","typhoeus","cloudflare","wpscan","ruby"],"backgroundTag":"http-download-failed","analyzedSha":"62c9cef471de90095f6b42245a11d0f8172d19c9","analyzedAt":"2026-08-21T17:10:47.902Z","schemaVersion":2},"datasetVersion":"2026-08-21T18:17:14.833Z"}