Network
What runs on the egress nodes, and what it refuses
An egress node is a machine that fetches arbitrary URLs on a stranger's behalf. That is a dangerous thing to operate carelessly, so this page describes what ours actually enforces — the source is in the same repository as the API.
SSRF is checked after DNS, on every hop
The obvious way to block requests to internal addresses is to reject hostnames that look private. That fails against a hostname whose DNS record points at a private address, and it fails again when a redirect sends the fetch somewhere new after the check has passed.
Our nodes resolve first and check the resolved address, and they do it on every redirect hop rather than only the first. Cloud metadata endpoints and private ranges are refused at the point where the connection would actually be made.
Only our API can use a node
Egress nodes authenticate their caller with an HMAC signature and refuse unsigned requests. A node that anyone on the internet could point at a target is an open proxy, which is both an abuse problem and a fast route to having the address blocklisted.
What is not written down
Nodes do not log target URLs or response bodies. Usage is metered — request counts and byte counts, which is what an invoice needs — and the content of what you fetched is not part of that record.
Requests carry size and timeout caps so that one very large or very slow target cannot occupy a node indefinitely.
Registered webhooks are validated too
The same reasoning covers billing webhooks: an endpoint URL is validated when it is registered and again at every single delivery, because a hostname that was public yesterday can point at an internal address today.
Get a key
Create an account and mint an API key in the dashboard. The full endpoint reference — request shapes, parameters and error codes — is published at https://api.roamingproxy.com/v2/docs.
