- Host
- gw.prokso.com
- Port
- 823 HTTP · 824 SOCKS5 - new IP per request · 10000–20000 sticky session, HTTP(S) and SOCKS5
- Username and password
- in your dashboard, on the plan page
Your dashboard generates ready-made lines in the format you need: choose the country, IP type and protocol.
- Host gw.prokso.com, ports 823 (HTTP), 824 (SOCKS5), 10000–20000 (sticky sessions, HTTP or SOCKS5)
- The username and password are in your dashboard on the plan page
- Check the IP in the response of the proxied request itself: the My IP page in a browser does not test your script
A step-by-step guide to connecting Prokso proxies in n8n. It takes a few minutes.
Step 1. Get the proxy details from your dashboard
Open your plan and copy the host gw.prokso.com, port, username and password. Port 823 is HTTP and 824 is SOCKS5 (both give a new IP for every request); ports 10000–20000 keep one IP (sticky session) for up to 120 minutes and work as both HTTP and SOCKS5 (each port is a separate address). Set the country in the username: username__cr.ua.
Step 2. Add the Proxy option to the HTTP Request node
Open the workflow, add an HTTP Request node and set the method and page URL as usual. In the node parameters click Add Option and choose Proxy: a field for the proxy address appears.
Step 3. Enter the proxy URL with credentials
In the Proxy field paste http://USERNAME:PASSWORD@gw.prokso.com:823, taking the username and password from the dashboard generator. The field only accepts addresses starting with http:// or https://, so SOCKS5 on port 824 won't work here: use 823 or a sticky port from 10000-20000. The proxy applies to this node only; set up other HTTP Request nodes separately.
Step 4. Set the pace and timeout
If many items reach the node, each one becomes a separate request, and on port 823 each gets a new address. To avoid flooding the website, add the Batching option: Items per Batch is how many requests go in one batch and Batch Interval is the pause between batches in milliseconds. The Timeout option sets how many milliseconds to wait for a response.
Step 5. A proxy for all of n8n on your own server
If n8n runs on your own server, you can set the proxy once with environment variables: HTTP_PROXY for http websites, HTTPS_PROXY for https websites and ALL_PROXY as a fallback for both. All HTTP traffic from nodes then goes through the proxy. The Proxy option on a node takes priority over these variables. Below is a Docker launch; restart the container after changing the variables.
docker volume create n8n_data
docker run -it --rm \
--name n8n \
-p 5678:5678 \
-e HTTP_PROXY=http://USERNAME:PASSWORD@gw.prokso.com:823 \
-e HTTPS_PROXY=http://USERNAME:PASSWORD@gw.prokso.com:823 \
-e NO_PROXY=localhost,127.0.0.1 \
-v n8n_data:/home/node/.n8n \
n8nio/n8nStep 6. Exclude hosts that don't need the proxy
In NO_PROXY list the hosts n8n should reach directly, separated by commas, such as your internal services. That way they don't use up the plan's traffic. Note that n8n reads these variables through the proxy-from-env package, and the lowercase form (http_proxy) wins over the uppercase one (HTTP_PROXY) when both are set.
Step 7. Check the IP in a workflow
Build a test workflow: a Manual Trigger node followed by an HTTP Request node with GET https://api.ipify.org?format=json and the proxy set. Run the workflow manually and look at the node output: the ip field should show the proxy's address, not your server's. A 407 error means a wrong username or password, or the plan has run out of traffic. The My IP page in your browser won't help here: the request is made by the n8n server, not the browser.
Country and IP per item with an expression in the Proxy field
Like other node parameters, the Proxy field can be switched to Expression. Then each item goes out through its own country and port. Put the page URL, the country code and the port into the incoming data, for example from a Set node or a table:
[
{ "url": "https://example.de/catalog", "country": "de", "port": 10001 },
{ "url": "https://example.pl/catalog", "country": "pl", "port": 10002 },
{ "url": "https://example.com/catalog", "country": "us", "port": 823 }
]In the URL field write {{ $json.url }}, and in the Proxy field:
http://USERNAME__cr.{{ $json.country }}:PASSWORD@gw.prokso.com:{{ $json.port }}Items with a sticky port from 10000-20000 keep one IP for the hold time you set in the dashboard, and each port is a separate address. Items with port 823 get a new IP on every request. The country costs nothing extra, so you can mix several countries in one run.
When the n8n HTTP Request node fails
n8n turns network and HTTP errors into short messages. Here is what they usually mean when the request goes through a proxy:
- "The connection timed out, consider setting the 'Retry on Fail' option in the node settings". The proxy or the website didn't answer in time. Raise the Timeout option and turn on Retry On Fail (see below).
- "The connection cannot be established, this usually occurs due to an incorrect host (domain) value". A typo in
gw.prokso.comor in the page URL, or DNS doesn't work inside the container. - "The service refused the connection - perhaps it is offline". Nothing accepted the connection at that address. Check the port in the Proxy field: 823 or 10000-20000.
- "Forbidden - perhaps check your credentials?". n8n shows this for any 403, but through a proxy it's almost always the website refusing the request, not your n8n credentials. A wrong proxy password gives 407 instead.
- "The service is receiving too many requests from you". A 429 from the website. Raise Batch Interval and lower Items per Batch.
Retry On Fail without paying twice for traffic
On the node's Settings tab, Retry On Fail runs the node again after an error. Max. Tries is the number of attempts (n8n accepts 2 to 5, 3 by default) and Wait Between Tries (ms) is the pause between them (up to 5000 ms, 1000 by default). On port 823 every attempt goes out from a new IP; on a sticky port it's the same IP until the hold time ends.
Keep in mind that the whole node runs again with all its input items. If one page out of a hundred fails, all hundred are downloaded again, and traffic is counted in both directions each time. For long lists set On Error to Continue (using error output): failed items go to a separate output, where a second HTTP Request node with a pause can retry only them.
Another way is the Response option: turn on Never Error and Include Response Headers and Status. The node then returns the statusCode field even for 403 and 429, and an IF node can route those items to a slower branch.
If the proxy does not work
FAQ
Can I use SOCKS5?
Not in the Proxy field: it only accepts addresses with http:// or https://. n8n skips an address in any other format and falls back to the environment variables, and if there are none, the request goes direct. Use HTTP on port 823 or on sticky ports 10000-20000.
What applies if both the node option and environment variables are set?
The Proxy option on the node. HTTP_PROXY, HTTPS_PROXY and ALL_PROXY apply to every node that has no proxy of its own.
The variables are set but requests go direct. Why?
Check whether the container or server environment has the same variables in lowercase, such as http_proxy: they take priority over the uppercase ones. Also restart n8n after changing the variables.
Does Retry On Fail send the request from a new IP?
On port 823, yes: every attempt gets a new address. On a sticky port the IP stays the same until the hold time ends, so if the website refuses that address, retries won't help: move the item to another port or to 823.
How much traffic does one HTTP Request call use?
The size of the request plus the size of the response. Unlike a browser, the node downloads only the URL you give it, without images and scripts. If the website has an API with JSON, request that instead of the HTML page: it's usually much smaller.