Documentation Python quickstart Blog Free tools Enterprise solutions hello@quanticdata.ioLog in

How to set up a proxy in ZennoPoster: the format, one proxy per thread, the fixes

Setting up a proxy in ZennoPoster in four steps: generate a sticky line in the QuanticData endpoint generator in the http://user:pass@host:port format, paste it into a Browser settings action with Set proxy, give every thread its own line from a list loaded from a file, then check the exit on ipinfo.io; the card lists the three things to verify when Set proxy fails.
Setting up a proxy in ZennoPoster in four steps: generate a sticky line in the QuanticData endpoint generator in the http://user:pass@host:port format, paste it into a Browser settings action with Set proxy, give every thread its own line from a list loaded from a file, then check the exit on ipinfo.io; the card lists the three things to verify when Set proxy fails.

To use a proxy in ZennoPoster, add a Browser settings action to the project, choose Set proxy and paste the proxy as a URL: http://login:password@host:port, or socks5:// for SOCKS5. To give every thread its own IP, load a list of sticky lines from a file and let each thread take one. Below: each step, ISP and mobile lines, and a fix for each error.

ZennoPoster runs projects built in ProjectMaker, often in many threads at once, each with its own browser instance. The proxy decides which IP address and which country the sites see for that instance. ZennoPoster reads a proxy written like a URL, with the login before the host, and that is where most setups go wrong: host:port:user:pass, the layout many dashboards give first, is not a format it accepts. The action and field names below are the ones in ZennoLab's documentation, and the values come from the QuanticData endpoint generator.

What you need before you start

  • ZennoPoster 7 with ProjectMaker, version 7.7.15.0 or later. That release added proxies with a host name; earlier versions took an IP address only, and every QuanticData gateway is a host name.
  • A proxy plan. Residential Premium, ISP or mobile: all of them work in ZennoPoster. The table further down says which one fits which project.
  • The line in URL format. In the QuanticData dashboard it is under My proxies, on the plan's page, in the Endpoint generator, with Output format set to http://user:pass@host:port.

The proxy format ZennoPoster reads

ZennoLab's documentation lists one layout, with or without a login:

  • protocol://login:password@host:port for a proxy with a username and password.
  • protocol://host:port for a proxy that recognises your IP, with no login.
  • protocol is http, socks4 or socks5. It can be left out (login:password@host:port), and ZennoPoster then uses http.

The same QuanticData proxy, written for ZennoPoster:

# HTTP, Residential Premium, sticky session in Türkiye
http://USER-country-tr-sid-zp01-ttl-60m:PASS@residentialpremium.quantumproxies.io:8080

# SOCKS5, the same session on its own port
socks5://USER-country-tr-sid-zp01-ttl-60m:PASS@residentialpremium.quantumproxies.io:1080

# no login: a mobile plan with your IP on the whitelist
http://mobile.quantumproxies.io:10000

The login is everything between // and the colon before the password: -country-tr picks the exit country, -sid-zp01 names the session and -ttl-60m keeps it for 60 minutes. The generator writes the whole line when Output format is http://user:pass@host:port; with the Protocol on SOCKS5 the same option reads socks5://user:pass@host:port and the port changes to 1080. Pasting host:port:user:pass instead is the most common mistake: ZennoPoster does not read that layout.

Step by step: set a proxy in a ZennoPoster project

The QuanticData Endpoint generator for a Residential Premium plan: Türkiye selected, Session set to Sticky with a 60-minute TTL, HTTP protocol, Output format http://user:pass@host:port and the preview line on residentialpremium.quantumproxies.io port 8080, with the username and password blurred
Step 1 in the QuanticData dashboard: country, sticky session, protocol and the URL format ZennoPoster reads.
  1. Generate the line. In the QuanticData dashboard open My proxies, then your plan. In the Endpoint generator choose the Country (and a Region or City if the project needs one), set Session to Sticky, set Session TTL (minutes) to at least the length of one run, choose the Protocol and set Output format to http://user:pass@host:port. Copy the line from Preview.
  2. Add the action. In ProjectMaker, right-click the canvas and choose Add action, Browser, Settings. Connect it so that it runs before the first page the project opens.
  3. Choose Set proxy in the action's drop-down list.
  4. Paste the line into the field under it. The field also takes a variable, which is how every thread gets its own proxy (next section but one).
  5. Keep the three Emulate boxes ticked. With Emulate Geolocation, Emulate Timezone and Emulate WebRTC on, ZennoPoster sets the browser's location, time zone and WebRTC address to match the proxy's exit IP.
  6. Leave How to detect proxy "exit" IP on Automatically. ZennoPoster then finds the exit IP through ZennoLab's servers. Manually specified is for when you already know it.
  7. Untick Ignore errors. With it ticked and the exit IP not found, ZennoPoster emulates the location of the address you connect to, which for a gateway is the gateway itself, not the IP the sites see. With it unticked, the action fails and you know why.
  8. Run the project and check the exit, as in the next section.
The Browser settings action of ZennoPoster with five numbered steps beside it: 1 Set proxy, 2 the QuanticData Residential Premium line http://USER-country-tr-sid-zp01-ttl-60m:PASS@residentialpremium.quantumproxies.io:8080, 3 Emulate Geolocation, Timezone and WebRTC ticked, 4 exit IP detection Automatically (real check: Istanbul, Istanbul, Europe/Istanbul), 5 Ignore errors unticked
Steps 3 to 7 in ProjectMaker, redrawn with our values.

While you record a project by hand, the browser window of ProjectMaker can also take a proxy: its status bar shows the current one and, from version 7.3.2.0, sets it with a click, and the Profile window has a Proxy section that takes the same format. In a project that runs on its own, the Set proxy action is the one that counts.

Check where the project exits

After Set proxy, add a Go to page action to https://ipinfo.io/json, or type the address in the browser of ProjectMaker. The page shows the exit IP, its city, region, country and time zone; the country has to match the -country- in the login. Our check of a QuanticData Türkiye line on 23 October 2026 came back from Istanbul, region Istanbul, time zone Europe/Istanbul.

The ProjectMaker browser window of ZennoPoster on https://ipinfo.io/json after Set proxy: a real check of a QuanticData Türkiye line showing city Istanbul, region Istanbul, country TR and time zone Europe/Istanbul with the IP masked, and the status bar showing residentialpremium.quantumproxies.io:8080 as the proxy; three numbered steps beside it
A real check through a Türkiye sticky line, 23 October 2026. Redrawn screen, IP masked.

The status bar at the bottom of the browser window shows the proxy in use; it reads Without proxy when there is none. In a project that runs without anyone watching, a GET request does the same check: on its Proxy tab choose Active project proxy, send it to https://ipinfo.io/json and write the answer to the log.

One test outside ZennoPoster tells you whether the proxy itself works. If this returns an address in the right country, the problem is in the project, not in the proxy:

curl -x http://residentialpremium.quantumproxies.io:8080 \
  -U "USER-country-tr-sid-test-ttl-10m:PASS" https://ipinfo.io/json

A different proxy for every thread

ZennoPoster runs a project in as many threads as its Max threads setting allows. A line written straight into Set proxy is the same in every thread, so every thread leaves from the same sticky IP. To give each thread its own, put the lines in a list and let each thread take one. Every line from the generator carries its own session ID, so every line is a different IP.

The Generate 10 sessions button of the QuanticData Endpoint generator with Copy all and Download, and the list of ten sticky lines in the http://user:pass@host:port format, credentials blurred
One line per thread: every generated line has its own session ID.
  1. Make the lines. In the generator keep Session on Sticky and the URL output format, set Quantity (sessions) to the number of lines you need, click Generate, then Download (or Copy all and save the text as a .txt file).
  2. Add a list to the project. Right-click the canvas, Add action, Lists, List; the list appears in the static blocks panel at the bottom. The example calls it proxies.
  3. Load it from the file. Open the list, tick Load from file and choose the .txt in File path.
  4. Tick Save list changes to a file. This box is what makes the method work. ZennoLab's documentation is explicit: without it every thread works on its own copy of the list, so every thread would take the same first line; with it, all threads share one copy and every change goes back to the file.
  5. Take one line per thread. At the start of the project add Add action, Lists, List processing, and set it to the list proxies, Get line, First. Tick Delete line after taking and, under Put to variable, write proxy. Each thread removes the line it takes, so the next thread gets the next one.
  6. Use the variable in Set proxy. In the Set proxy field write {-Variable.proxy-} instead of a line.
  7. Set the threads in ZennoPoster. In the project's Settings tab, set Max threads, and keep its Proxy setting on Don't use: the project sets its own proxy, so ZennoPoster should not hand the thread one from its ProxyChecker as well.
Three ZennoPoster boxes with six numbered steps: a List called proxies loaded from a file of QuanticData sticky lines with Load from file and Save list changes to a file ticked, the Action properties of a Get line action with First, Delete line after taking ticked and the variable proxy, and Set proxy reading {-Variable.proxy-}
A list shared by all threads, one line taken and removed by each thread. Redrawn screens with our values.

With Delete line after taking on, each line is used once. When a project runs more times than there are lines, either generate more (the generator makes as many as the Quantity field says) or put the line back when the run ends: List processing, Add a line, the variable proxy, at the end. A line that comes back keeps its session ID; once its TTL has passed, the same line gives a new IP. Get line with Random and no deletion is not a substitute: two threads can draw the same line.

For accounts, keep the line with the account rather than drawing it from a pool: a table with the login in one column and its proxy line in the next gives each account the same session every time it runs.

Which proxy type for which project

Proxy typeIn ZennoPosterGood for
Residential PremiumOne sticky line per thread or account, as http:// on 8080 or socks5:// on 1080; country, region, city or ISP in the login; username and password onlyMost projects: home IPs in the country you choose, one per thread
ISPFixed IPs listed under Assigned IPs; Output format Proxy URL gives http://USER:PASS@IP:50100, SOCKS5 on 50101Accounts that should keep the same address for months
MobileOne sticky line per thread with -type-mobile in the login; Global, USA, EU or Asia gateway; HTTP 8080 or SOCKS5 1080; IP whitelist with no loginPhone-first platforms and accounts tied to mobile networks

Residential Premium proxies in ZennoPoster

A rotating line changes IP on every request, which suits plain scraping and breaks anything with a login: the site sees the same session jump between addresses. A sticky session keeps one IP for as long as it lives, and it lives in the username, so the line never changes once it is in the list.

# thread or account 1: Türkiye, one session for a working day
http://USER-country-tr-sid-zp01-ttl-480m:[email protected]:8080

# thread or account 2: same plan, its own session (never reuse zp01)
http://USER-country-tr-sid-zp02-ttl-480m:[email protected]:8080

# thread or account 3: Germany, open all day
http://USER-country-de-sid-zp03-ttl-1440m:[email protected]:8080
  • A different session ID for every thread. Two threads on the same line share one IP, which is what the list above exists to prevent.
  • A lifetime longer than the run. The generator accepts up to 1440 minutes, a full day. When the session ends, the next request gets a new IP.
  • The country in the login. Without -country- the exit can be anywhere, and the emulated time zone follows wherever it lands.

More on the network itself: QuanticData residential proxies, and proxies in Türkiye for the country used in this guide.

ISP proxies in ZennoPoster

An ISP plan gives fixed IPs, listed in the dashboard under Proxy endpoints, Assigned IPs. Set Output format to Proxy URL and every IP comes out as a line ZennoPoster reads as it is: http://USER:PASS@IP:50100. For SOCKS5, switch Protocol above it: the port becomes 50101, and the line has to start with socks5://. Copy one line into Set proxy, or use Export .txt to make the file for the list method above: one IP per thread or per account, the same IP for months. Since the exit IP is the IP in the line, the emulation follows it directly.

The Assigned IPs panel of a QuanticData ISP plan: Protocol HTTP / HTTPS or SOCKS5, Output format Proxy URL, five IPs masked with port 50100 and username USER, Export .txt and Copy selected, and the formatted output as http://USER:PASS@IP:50100 lines
ISP plan: one fixed IP per line in the URL format, ready for Set proxy or a list file. Sample IPs masked.
The Set proxy option of the ZennoPoster Browser settings action with a QuanticData ISP line http://USER:PASS@138.x.x.178:50100 (IP masked), the three Emulate boxes ticked and exit IP detection Automatically, with four numbered steps beside it
An ISP IP in Set proxy. Redrawn screen with our values, IP masked.

The plans are on the page for ISP proxies.

Mobile proxies in ZennoPoster

A mobile line works like a Residential Premium one, with -type-mobile in the login and its own host. In the Mobile plan's generator choose the country, the gateway (Global, USA, EU or Asia), Sticky, HTTP 8080 or SOCKS5 1080 and the URL output format:

http://USER-country-tr-type-mobile-sid-m01-ttl-60m:PASS@mobile.quantumproxies.io:8080
The Mobile Endpoint generator of QuanticData: Türkiye selected, Global, USA, EU and Asia gateways, Session Sticky with a 60-minute TTL, HTTP 8080 or SOCKS5 1080, Output format http://user:pass@host:port and the preview line on mobile.quantumproxies.io port 8080, credentials blurred
Mobile: gateway, ports and the URL format for ZennoPoster.

Mobile plans also offer IP whitelist authentication. Add the IP of the computer that runs ZennoPoster under IP whitelist, then take the host:port list under Proxy list for a whitelisted IP and write each line with its scheme and no login, for example http://mobile.quantumproxies.io:10000. The list method works the same way. More on the network: QuanticData mobile proxies and mobile proxies in Türkiye.

Proxies in HTTP requests and the ProxyChecker

The GET and POST request actions do not use the browser, and they have their own Proxy tab: Without proxy, Active project proxy, a format string in the protocol://login:pass@ip:port layout, or Other for the fields one by one. Choose Active project proxy and the request goes out through the proxy that Set proxy gave the thread. ZennoPoster 7.9.1.0 and later also count the traffic of every proxy, browser and HTTP requests together, and a project can read the figures through the ZennoPoster.ProxyTrafficInfo object of the API.

The ProxyChecker built into ZennoPoster is a tool for loading proxy lists, re-checking them and handing them out by rules, through the Get proxy action or the project's Proxy setting. A proxy taken with Get proxy still has to be applied with Set proxy. With a gateway that keeps its sessions in the username, a list file as above is the shorter route.

ZennoPoster proxy not working: errors and fixes

When a proxy fails, the Set proxy action ends with an error and the log window shows the failed action in red; double-clicking the entry takes you to it on the canvas. These are the cases behind it, in the order to check.

The Set proxy option of ZennoPoster with the wrong line residentialpremium.quantumproxies.io:8080:USER-country-tr-sid-zp01-ttl-60m:PASS, a host:port:user:pass layout ZennoPoster does not read, and Ignore errors unticked; beside it, what to check in order: the line written as http://user:pass@host:port, the scheme that matches the port, the plan active with traffic left
The most common mistake: the line in the wrong layout. Redrawn screen.
What you seeUsual causeFix
Set proxy fails, or the status bar does not show the proxyThe line is host:port:user:pass, or the login comes after the hostGenerate it with Output format http://user:pass@host:port (socks5://user:pass@host:port for SOCKS5)
Set proxy fails on the exit IPThe proxy does not answer: http:// on 1080 or socks5:// on 8080, or the plan expired or ran out of traffichttp:// with 8080, socks5:// with 1080; check status, remaining traffic and expiry in My proxies
The host name is not acceptedZennoPoster older than 7.7.15.0, which took proxies with an IP address onlyUpdate ZennoPoster
Wrong country or time zoneNo -country- in the login, or Ignore errors ticked and the exit IP not foundGenerate the line with a country; untick Ignore errors
Every thread has the same IPThe line is written in Set proxy, or the list is not shared between threadsA list loaded from the file with Save list changes to a file and Delete line after taking
The IP changes in the middle of a runThe session lifetime endedA longer -ttl-, up to 1440 minutes

If the curl test above works on your computer and the project still fails, the problem is in the project's fields; if curl fails too, check the plan first, then whether a firewall blocks the proxy port.

HTTP or SOCKS5 in ZennoPoster

ZennoPoster takes both, and every QuanticData network offers both. HTTP on port 8080 is the simpler choice and the one to start with. SOCKS5 on port 1080 passes any kind of connection, not only web pages; write the line with socks5:// in front, since without a scheme ZennoPoster assumes http. More on the protocol on the page for SOCKS5 proxies. What breaks a project is never the choice itself, only a scheme that does not match its port.

Before you run accounts

A proxy changes where a thread's traffic comes from, not what the project is allowed to do. Keep to each platform's terms and to the law where you work, and use one thread, one session and one identity per account.

Sources & further reading

FAQ

Quick answers on zennoposter proxy.

Something else? Ask us

How do I set a proxy in ZennoPoster?

In ProjectMaker add Add action, Browser, Settings, choose Set proxy and paste the proxy as a URL, for example http://login:password@host:port. Keep Emulate Geolocation, Timezone and WebRTC ticked, leave the exit-IP detection on Automatically and untick Ignore errors. Put the action before the first page the project opens, then check the exit on https://ipinfo.io/json.

What proxy format does ZennoPoster use?

protocol://login:password@host:port with a login, protocol://host:port without one, where protocol is http, socks4 or socks5; without it ZennoPoster uses http. It does not read host:port:user:pass. In the QuanticData generator choose the output format http://user:pass@host:port, which becomes socks5://user:pass@host:port when the protocol is SOCKS5.

How do I use a different proxy for each thread in ZennoPoster?

Save one sticky line per thread in a .txt file and add a List that loads it, with Load from file and Save list changes to a file ticked, so all threads share one copy. At the start of the project, a List processing action takes the first line with Delete line after taking ticked and puts it into a variable; Set proxy then reads {-Variable.proxy-}. Each thread takes and removes its own line.

Does ZennoPoster support SOCKS5 proxies with a username and password?

Yes. Write the line as socks5://login:password@host:port; on QuanticData the SOCKS5 port is 1080 for Residential Premium and mobile, 50101 for ISP. The scheme matters: without it ZennoPoster treats the line as http.

What is the ZennoPoster ProxyChecker for?

It loads proxy lists, re-checks them and hands them out to projects by rules, through the Get proxy action or the project's Proxy setting in ZennoPoster. A proxy taken with Get proxy still has to be applied with Set proxy. For a gateway that keeps its sessions in the username, a list file with one sticky line per thread is the shorter route; keep the project's Proxy setting on Don't use in that case.

Why does my ZennoPoster project show the wrong country or time zone?

Either the line has no -country- in the login, so the exit can be anywhere, or Ignore errors is ticked in Set proxy and the exit IP was not found, so ZennoPoster emulated the location of the gateway instead. Generate the line with a country, untick Ignore errors and check the exit on https://ipinfo.io/json.

One sticky IP for every ZennoPoster thread

Residential Premium, ISP and mobile proxies with country targeting and sticky sessions up to 1440 minutes, HTTP and SOCKS5, generated in the URL format ZennoPoster reads.

Related reading