wpscanteam/wpscan · error · WPScan::Error::TargetDown
The url supplied '# ' seems to be down (# )
Error message
The url supplied '#{response.request.url}' seems to be down (#{response.return_message}) What it means
Raised by WPScan::Controller::Core#check_target_availability (app/controllers/core.rb:73) when the initial GET to the --url value returns Typhoeus status code 0, meaning the request never obtained an HTTP response at all. The message embeds the exact request URL plus libcurl's return_message (e.g. 'Could not resolve host', 'Connection timed out') so the failing transport step is identifiable. WPScan aborts immediately because every subsequent request would fail for the same reason.
Solutions
- Re-check the --url value for typos and confirm the site loads from the same machine (curl -I <url>)
- If --proxy is set, verify the proxy is reachable and can reach the target (curl -x <proxy> -I <url>)
- If the return_message mentions SSL/TLS, inspect the certificate or firewall rules on port 443
- Raise --connect-timeout / --request-timeout if the host is slow to answer
- If the message says 'Could not resolve host', fix DNS (resolv.conf) or use a resolvable hostname
Example fix
# before wpscan --url http://exmaple.com # => The url supplied 'http://exmaple.com' seems to be down (Could not resolve host) # after wpscan --url http://example.com
Defensive patterns
Strategy: retry
Validate before calling
# Pre-flight reachability check before invoking the scan
require 'typhoeus'
res = Typhoeus.get('http://example.com', followlocation: true, connecttimeout: 10)
abort "target unreachable: #{res.return_message}" if res.code.zero? Type guard
# Typhoeus code 0 is a transport-level failure, not an HTTP status transport_failure = res.is_a?(Typhoeus::Response) && res.code.zero?
Try / catch
begin
scan.run
rescue WPScan::Error::TargetDown => e
warn "#{e.response.request.url} unreachable: #{e.response.return_message}"
retry if (attempts += 1) < 3 && sleep(5)
raise
end Prevention
- Validate --url with curl from the same host/proxy before launching the scan
- Configure --connect-timeout and --request-timeout for slow or distant targets
- Verify --proxy reachability in CI environments
- Run scans from a network that can actually reach the target
When it happens
Trigger: Running `wpscan --url http://target` where DNS resolution fails, the TCP connection is refused/filtered, the TLS handshake fails, or the connection times out. Also produced when a --proxy is configured but unreachable, or when --url contains a typo (wrong hostname/TLD). The check is `res = WPScan::Browser.get(target.url); raise if res.code == 0`.
Common situations: Typo'd domain in --url; host firewall dropping the scanner's IP; corporate egress proxy required but not configured; IPv6-only target; decommissioned site; CI runner without network egress.
Understand the failure class
Background: ECONNREFUSED and "connection refused" / "could not connect to server" errors: what they mean and how to fix them — this error's family across 44 libraries.
Related errors
AI-assisted analysis of wpscanteam/wpscan@62c9cef471 (2026-08-21).
Data as JSON: /api/errors/dc1298a7ee2cd2a7.
Report an issue: GitHub.
Appendix: source
Thrown at app/controllers/core.rb:73
def maybe_output_banner_help_and_version
output('banner') if WPScan::ParsedCli.banner
output('help', help: option_parser.simple_help, simple: true) if WPScan::ParsedCli.help
output('help', help: option_parser.full_help, simple: false) if WPScan::ParsedCli.hh
output('version') if WPScan::ParsedCli.version
exit(WPScan::ExitCode::OK) if WPScan::ParsedCli.help || WPScan::ParsedCli.hh || WPScan::ParsedCli.version
end
# Checks that the target is accessible, raises related errors otherwise.
#
# @return [ Void ]
def check_target_availability
res = WPScan::Browser.get(target.url)
case res.code
when 0
raise Error::TargetDown, res
when 401
raise Error::HTTPAuthRequired
when 403
raise Error::AccessForbidden, WPScan::ParsedCli.random_user_agent unless WPScan::ParsedCli.force
when 407
raise Error::ProxyAuthRequired
end
handle_redirection(res)
end
# Checks whether the response or its redirect chain contains a SAMLRequest,
# indicating that the target requires SAML authentication.
#
# @param [ Addressable::URI ] effective_uri Final URL after following redirects
# @param [ Typhoeus::Response ] homepage_res Response whose redirect chain to inspect
#
# @return [ Boolean ]View on GitHub (pinned to 62c9cef471)