Skip to main content
Test an HTTP proxy connection and distinguish configuration errors from gateway, network, and account API failures. Start here when your configuration builds but your requests do not work as expected. The SDK’s connection check reads the proxy gateway’s response directly, which can be easier to inspect than an HTTP client’s generic proxy error.

Run a connection check

Use the credentials and installation from your Python, Rust, or Go quickstart. These are complete programs; each checks an HTTP proxy and exits unsuccessfully if the gateway refuses it.
A successful result can look like this:
The timing and IP above are illustrative. An exit IP is displayed only when the gateway includes it in the reply. A successful check without an IP is a normal result; use a request to an IP echo service when you need to read the address consistently.

What the check proves

The check opens one HTTP CONNECT tunnel, by default to api.ipify.org:443, with a 15-second timeout. It reads the gateway response and closes the connection without fetching a page through the tunnel. The target can still see a TCP connection from the proxy exit. A 200 means the tunnel opened. It does not prove that a website will return the page you need, that a browser is configured correctly, or that every product property has been verified. Follow it with a real request from the same client your application uses. A gateway refusal is a result, not an exception or Go error. Inspect result.ok in Python, result.ok() in Rust, or result.OK() in Go. A returned 407 can otherwise look like a successful function call. The check uses HTTP CONNECT even if you built a URL with a different scheme. Do not point it at a SOCKS5 port to test SOCKS5.

Change the target or timeout

These fragments reuse proxy from the check program. In Rust, use them before Ok(()). In Go, add time to the imports and use the fragment inside run.
Changing the check timeout does not change the timeout in your application HTTP client.

Recognize SDK errors

Formatting checks account for the normalization rules: a space in New York is handled differently from a space in a session ID. All Python SDK exceptions inherit from NodeMavenError. API-specific exceptions inherit from ApiError. In Rust, account API errors also expose their status through error.status(). In Go, use errors.Is rather than comparing error strings.

Handle local configuration errors

These fragments demonstrate an intentional typo. They do not make a network request. Go needs the standard-library errors and fmt imports.

Interpret gateway responses

A status code is a starting point, not a complete diagnosis. The SDK’s gateway definition includes explanations from observed responses. For the same failure, requests, reqwest, or another client may raise a proxy/transport exception instead of exposing a normal HTTP response object. Distinguish the gateway’s CONNECT status from the target website’s HTTP status.

If the check succeeds but your task fails

  • Your own IP is returned: confirm the application’s client uses the SDK output. A new proxy object does not reconfigure an existing client.
  • The website returns 403, 429, or a challenge: inspect the target response, request rate, session handling, and the website’s access requirements. A successful tunnel is not a guarantee of website access.
  • A sticky exit changes: check its lifetime, availability, and whether targeting or filters changed. See Manage sessions.
  • The account API fails: verify NODEMAVEN_APIKEY, not the proxy password. For 429, use a bounded retry policy with backoff. The SDK does not retry automatically; its built-in API client does not expose a reliable Retry-After header.
When contacting support, include the SDK version, error category or status, target hostname, and a minimal example. Remove proxy passwords, API keys, authenticated URLs, and full account API responses.