Skip to content

Installation instructions for the multi-threaded version of ZloyProxy

Author: Zl0y
Source: Telegram channel Zl0yTeam
Original publications: telegra.ph/Ustanovka-Zloyproxy-04-28 and telegra.ph/Mnogo-potochnaya-versiya-ZLoyProxy-02-21


1. Main advantages of multi-threading

  1. Running multiple ports/proxies simultaneously – easy to scale to any number of threads (e.g., for ZennoPoster).
  2. Dynamic fingerprint management (JA3/HTTP2/proxy) via API – allows changing parameters "on the fly" for each port.
  3. Maximum uniqueness – increases the chances of bypassing modern anti-bot systems.
  4. Flexibility and ease of use – parameters are set in a single TSV file and can be changed via POST requests if necessary.

2. Installation and preparation

For Ubuntu

  1. Download the multi-threaded build (example using version v3.10.4o for amd64):

    curl http://172.86.96.108:16342/mitmproxy_mt_linux_amd64_v3.10.4api -o zloyproxy_mt
    

    (For other architectures, please send a PM.)

  2. Grant execution permissions:

    chmod +x zloyproxy_mt
    

For Windows

Open PowerShell as an administrator and run:

  1. Create a folder and navigate to it:

    mkdir C:\Proxy
    cd C:\Proxy
    

  2. Download the program:

    Invoke-WebRequest -Uri http://172.86.96.108:16342/mitmproxy_mt_windows_amd64_v3.10.4api -OutFile zloyproxy_mt.exe
    

    After executing these commands, the file zloyproxy.exe will appear in the C:\Proxy folder.

  3. Important for Windows:

All other steps are the same as for Ubuntu (just without sudo ./), run as an administrator.


3. TSV file preparation

The main "feature" of multi-threading is that you can specify multiple ports and fingerprints (JA3/HTTP2) at once, and if desired, a proxy for each port.

TSV template

An example file can be viewed here: http://172.86.96.108:16342/file.tsv

Structure:

port,ja3,http2,proxy
8000,<JA3_STRING>,<HTTP2_STRING>,socks5://login:pass@192.168.0.10:1080
8001,<JA3_STRING>,<HTTP2_STRING>,http://login:pass@192.168.0.20:8080
8002,<JA3_STRING>,<HTTP2_STRING>,<can_be_without_proxy>

  • port – any available port. A separate thread (proxy) will run on each of them.
  • ja3 – string with the TLS fingerprint (JA3).
  • http2 – string with parameters for the HTTP/2 fingerprint.
  • proxy – (optional) if you need to route traffic through an additional proxy (SOCKS5 or HTTP). If not specified in the TSV, you can set a global proxy using the -proxy parameter at launch or change it via the API.

Example of a small TSV:

port,ja3,http2,proxy
8000,"771,4865-4867-...","1:65536,4:131072,5:16384|12517377|m,p,a,s",socks5://login:pass@192.168.0.10:1080
8001,"771,4865-4867-...","1:65536,4:131072,5:16384|12517377|m,p,a,s",http://login:pass@45.67.89.10:8080
8002,"771,4865-4867-...","1:65536,4:131072,5:16384|12517377|m,p,a,s",

(HTTP2, JA3, and proxies must be enclosed in quotes if they contain commas, as the commas will break the TSV formatting.)


4. Launching multi-threading

  1. Navigate to the directory where zloyproxy_mt is located:

    cd /home/user/zloyproxy_mt/
    

  2. Run:

    sudo ./zloyproxy_mt -logs -tsv file.tsv -with-api
    

  3. If necessary, to set a common proxy for all ports (if not specified in the TSV):

    sudo ./zloyproxy_mt -logs -tsv file.tsv -proxy "socks5://user:pass@ip:port"
    

After launching, you will see a list of ports on which your multi-threaded HTTP proxies are running.


5. Managing fingerprints and proxies via API

The multi-threaded version provides an HTTP API (available by default at http://127.0.0.1:8888), which allows you to change the JA3, HTTP2, and proxy for a specific port "on the fly".

5.1. Changing JA3/HTTP2

curl -X POST http://127.0.0.1:8888/change/fingerprints \
 -d '{
  "port": 8000,
  "ja3": "771,4865-4866-4867,...",
  "http2": "1:65536,4:131072,5:16384|12517377|m,p,a,s"
 }'
  • port – the port number, as in the TSV.
  • ja3 – the new fingerprint string.
  • http2 – the new HTTP/2 fingerprint string.

5.2. Changing the proxy

curl -X POST http://127.0.0.1:8888/change/proxy \
 -d '{
  "port": 8000,
  "proxy": "socks5://login:pass@123.45.67.89:1080"
 }'
  • port – the port number, as in the TSV.
  • proxy – the new proxy (can be socks5 or http/https).

5.3. Typical workflow in ZennoPoster

  1. Set up multiple threads.
  2. In each thread:
    • Take a "free port" from the list (8000, 8001, etc.).
    • Send an API request to http://127.0.0.1:8888/change/fingerprints and/or change/proxy if you need to change the fingerprint/proxy.
    • Run an action in ZennoPoster using the HTTP proxy 127.0.0.1:port (without authorization).
    • If necessary, change the proxy or fingerprints again via API requests.

6. Proper shutdown

To correctly stop the multi-threaded proxy and avoid "stuck" processes:

Linux

  1. Press CTRL + C in the tab where zloyproxy_mt is running.
  2. If the program has "frozen" or CTRL + C doesn't help, use:
    sudo kill -9 $(pgrep -f zloyproxy_mt)
    

7. Additional tips and recommendations

  1. Use residential or mobile proxies – they are banned less often.
  2. Experiment with different JA3/HTTP2 – sometimes sites are sensitive to specific cipher suites.
  3. Certificates (for MITM substitution) can be generated with the -cert flag (just like in the single-thread version), or downloaded via a link if you have one.
  4. Check fingerprints on these services:

That's it! If you have any questions, feel free to send a PM.