Try now
Back to blog

How to Set Up Proxies in ZennoPoster: Set Proxy, ProxyChecker and Multithreading

How to Set Up Proxies in ZennoPoster: Set Proxy, ProxyChecker and Multithreading

In ZennoPoster, a proxy is attached to the browser with the Set proxy action in ProjectMaker: you place it before the first page load and enter a string such as http://login:password@host:port or socks5://login:password@host:port. For large lists there is ZennoProxyChecker, which imports, tests and hands out proxies to templates through the Get proxy action.

The connection itself is the easy part. The real work in a multithreaded template is deciding which thread gets which address, keeping account-bound proxies stable, catching dead servers before they stall a run and reading error 407 correctly. This guide covers all of that, plus the HTTP requests that ignore the browser proxy, something many tutorials skip.

Datacenter proxies

Fast datacenter proxies for multithreaded ZennoPoster templates

Try it

Choosing Proxies for ZennoPoster

Before buying, decide how the template will use the addresses:

  • Short independent tasks (checking pages, collecting public data) work well with a rotating gateway or a large pool.
  • Account sessions need one address per account for weeks; changing it mid-session causes repeated logins.
  • High thread counts need enough addresses that threads do not queue up on the same IP.
TypeSpeedStability of the IPTypical use in templates
DatacenterHighestFixedFast parsing, technical checks
Residential rotatingMediumChanges per request or sessionSites with strict anti-bot rules
ISP (static residential)HighFixed for monthsLong account sessions
MobileVariableChanges on rotationMobile-first platforms

Fast, cheap datacenter proxies cover most parsing templates. Where a site is picky about IP origin, residential or ISP addresses fit better; our ISP proxy setup guide explains how they differ.

HTTP or SOCKS5

ZennoPoster understands both. HTTP(S) proxies suit browser and web-request traffic, which is most of what templates do. SOCKS5 passes any TCP connection and is useful when the same proxy also serves other tools. If a provider gives both ports, test each; the comparison of SOCKS5 and HTTP proxies helps you choose.

Adding a Single Proxy With Set Proxy

Step 1. Open the Template in ProjectMaker

Start ProjectMaker and open the project, or record a new one.

Step 2. Insert the Action Before the First Page Load

Right-click the canvas, choose Add action → Browser → Settings and select Set proxy. Connect it so it runs before any Go to page action; a page opened earlier will use the old connection.

ZennoPoster ProjectMaker canvas with an Undefined action block and its Action Properties set to Set proxy with the line 123.123.123.123:10000
The Set proxy action in ProjectMaker

Step 3. Enter the Proxy String

ZennoLab's documentation lists these formats:

http://login:password@203.0.113.50:8000
socks5://login:password@203.0.113.50:1080
http://203.0.113.50:8000
login:password@203.0.113.50:8000

Without a protocol prefix, ZennoPoster assumes HTTP. The Other option opens separate fields for type, address, port, login and password if you prefer them. Every field accepts variables, so you can write {-Variable.proxy-} instead of a fixed value.

Set proxy action properties in ZennoPoster with a masked login:password@IP:50100 proxy line and the geolocation, time zone, WebRTC and DNS over HTTPS checkboxes
Proxy line with a login and password

Step 4. Run a Test

Add Go to page with any what-is-my-IP site after Set proxy and run the project step by step. The page should show the proxy's address.

The Catch: HTTP Requests Use Their Own Proxy

Set proxy changes only the built-in browser. Actions that work without the browser, such as GET request and POST request, have their own proxy field. If your template mixes browser steps and direct requests, put the same variable into those fields, otherwise part of the traffic leaves from your real IP.

Bulk Lists With ZennoProxyChecker

ZennoProxyChecker ships with ZennoPoster and handles big lists:

  1. Prepare the file. One proxy per line: ip:port for open proxies or login:password@ip:port for authenticated ones. Remove blank lines and stray spaces.
  2. Add a source. On the Sources tab, add the file (or a web page with a list). In the source settings you can choose how proxies are parsed and checked.
  3. Create check rules. In advanced source settings, add a rule that opens a target URL through each proxy and looks for expected text. On the Rules tab, build filters such as anonymity level plus a passed URL test.
  4. Start checking on the Control tab.
  5. Take proxies into templates with the Get proxy action. Pick the rule, and tick Delete proxy from the live list if each address should go to only one thread.

You can test individual servers outside the program with our free online proxy checker.

Binding a Proxy to Each Account

For long sessions, store the proxy next to the account data: one row in a table or list per account with login, password and proxy string. At the start of the template:

  1. Take the account row with a Table or List operation.
  2. Parse it into variables, for example {-Variable.acc_login-} and {-Variable.proxy-}.
  3. Pass {-Variable.proxy-} to Set proxy and to any GET or POST actions.

The account always comes back from the same address, which keeps sessions and security checks calm. Our overview of IP rotation explains when a fixed address is better than a changing one.

Distributing Proxies Across Threads

When twenty threads read one list at once, two of them can grab the same line. Ways to avoid that:

  • Take and delete. In the List operation that fetches a proxy, enable deleting the line after reading; the next thread gets the next address.
  • Lock the shared resource. If a C# snippet or global variable holds the pool, wrap access in a lock so only one thread changes it at a time.
  • Pre-assign. Map proxies to accounts in advance and keep the mapping between runs.
  • Gateway. With a rotating gateway, every thread can use the same entry address; the provider spreads connections over its pool.

Checking the Real IP Inside a Template

Add a check branch before the main logic: a GET request to an IP echo service through the same proxy, saving the answer in a variable and comparing it with the expected address. This catches a proxy that silently failed, a thread that got the wrong line and authentication that did not stick. Log the proxy, external IP, time, result and number of retries for every run.

Errors and Fixes

407 Proxy Authentication Required. Login or password is wrong, the string format is broken, or the provider expects IP allowlisting. Recheck the string character by character and the authorisation method in the dashboard.

Timeouts. The proxy or the target site is slow. Raise the timeout in the action settings, then compare a few other addresses from the pool to see whether one server is to blame.

Works in ProjectMaker, fails in ZennoPoster. Variables are filled differently in a real run, or threads share one line. Log the proxy value at the start of each thread.

Endless retries. Limit retries to two or three, then mark the proxy as bad and take another one so one dead server does not freeze the whole run.

Free lists. Public proxies are overloaded and short-lived; even after ProxyChecker filtering, few survive a long run.

ZennoPoster proxy FAQ

What proxy format does ZennoPoster accept?

protocol://login:password@ip:port for authenticated proxies and protocol://ip:port for open ones, where the protocol is http or socks5. Without a prefix, HTTP is assumed.

Does Set proxy apply to GET and POST requests?

No. It changes only the browser. Request actions have their own proxy field, so pass the same variable there.

How do I give each thread a different proxy?

Take proxies from a list with line deletion enabled, use Get proxy with Delete proxy from the live list, or bind proxies to accounts in a table.

Does ZennoPoster support SOCKS5?

Yes. Use the socks5:// prefix in Set proxy or choose the type in the Other fields.

Which proxies suit ZennoPoster best?

Datacenter proxies for fast parsing, ISP proxies for long account sessions and residential proxies for sites with strict anti-bot checks.