{"id":13521633,"url":"https://github.com/trimstray/multitor","last_synced_at":"2025-05-14T20:04:10.486Z","repository":{"id":38224781,"uuid":"117168174","full_name":"trimstray/multitor","owner":"trimstray","description":"Create multiple TOR instances with a load-balancing.","archived":false,"fork":false,"pushed_at":"2024-11-19T14:06:47.000Z","size":796,"stargazers_count":1087,"open_issues_count":21,"forks_count":175,"subscribers_count":42,"default_branch":"master","last_synced_at":"2025-04-13T14:06:13.669Z","etag":null,"topics":["balance","circuit","communication","haproxy","http-proxy","identity","instances","load-balancer","multi-tor","multitor","onion","polipo","privoxy","proxy","socket","socks-proxy","tor","tor-network","tor-proxy","traffic"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/trimstray.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-01-11T23:56:06.000Z","updated_at":"2025-04-08T16:30:46.000Z","dependencies_parsed_at":"2024-12-06T03:03:20.412Z","dependency_job_id":"257be6bf-5762-47ae-92a9-7cb4f1431f6c","html_url":"https://github.com/trimstray/multitor","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trimstray%2Fmultitor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trimstray%2Fmultitor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trimstray%2Fmultitor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trimstray%2Fmultitor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/trimstray","download_url":"https://codeload.github.com/trimstray/multitor/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248724639,"owners_count":21151561,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["balance","circuit","communication","haproxy","http-proxy","identity","instances","load-balancer","multi-tor","multitor","onion","polipo","privoxy","proxy","socket","socks-proxy","tor","tor-network","tor-proxy","traffic"],"created_at":"2024-08-01T06:00:36.628Z","updated_at":"2025-04-13T14:06:17.338Z","avatar_url":"https://github.com/trimstray.png","language":"Shell","funding_links":[],"categories":["Shell","By Language","\u003ca id=\"d03d494700077f6a65092985c06bf8e8\"\u003e\u003c/a\u003e工具","Uncategorized","Applications"],"sub_categories":["Shell","\u003ca id=\"d3069cac6097830d12f5933c9c8b7a77\"\u003e\u003c/a\u003eHAProxy","Uncategorized","Other applications"],"readme":"\u003ch1 align=\"center\"\u003emultitor\u003c/h1\u003e\n\n\u003ch4 align=\"center\"\u003eCreate multiple TOR instances with load-balancing.\u003c/h4\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://travis-ci.org/trimstray/multitor\"\u003e\n    \u003cimg src=\"https://travis-ci.org/trimstray/multitor.svg?branch=master\" alt=\"Travis-CI\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://img.shields.io/badge/Version-v1.3.0-lightgrey.svg\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Version-v1.3.0-lightgrey.svg\" alt=\"Version\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"http://www.gnu.org/licenses/\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/license-GNU-blue.svg\" alt=\"License\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n   \u003ca href=\"#description\"\u003eDescription\u003c/a\u003e\n • \u003ca href=\"#introduction\"\u003eIntroduction\u003c/a\u003e\n • \u003ca href=\"#how-to-use\"\u003eHow To Use\u003c/a\u003e\n • \u003ca href=\"#parameters\"\u003eParameters\u003c/a\u003e\n • \u003ca href=\"#requirements\"\u003eRequirements\u003c/a\u003e\n • \u003ca href=\"#docker\"\u003eDocker\u003c/a\u003e\n • \u003ca href=\"#other\"\u003eOther\u003c/a\u003e\n • \u003ca href=\"#license\"\u003eLicense\u003c/a\u003e\n • \u003ca href=\"https://github.com/trimstray/multitor/wiki\"\u003eWiki\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cbr\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://github.com/trimstray/multitor/blob/master/static/img/multitor_output_1.png\" alt=\"Master\"\u003e\n\u003c/p\u003e\n\n## Description\n\nIt provides one single endpoint for clients. Supports **[HAProxy](http://www.haproxy.org/)**, **socks** protocol and **http-proxy** servers: **[polipo](https://www.irif.fr/~jch/software/polipo/)**, **[privoxy](https://www.privoxy.org/)** and **[hpts](https://github.com/oyyd/http-proxy-to-socks)**.\n\nIn addition, you can **view** previously running **TOR** processes and create a **new identity** for all or selected processes.\n\n\u003e The `multitor` has been completely rewritten on the basis of:\n\u003e\n\u003e - **Multi-TOR** project written by *Jan Seidl*: [Multi-TOR](https://github.com/jseidl/Multi-TOR)\n\u003e - original source is (*Sebastian Wain* project): [Distributed Scraping With Multiple TOR Circuits](http://blog.databigbang.com/distributed-scraping-with-multiple-tor-circuits/)\n\n## Introduction\n\n`multitor` was created with the aim of initialize many **TOR** processes as quickly as possible. I could use many instances for my daily use programs (web browsers, messangers and other). In addition, I was looking for a tool that would increase anonymity when conducting penetration tests and testing the security of infrastructure.\n\nBefore using the `multitor` you need to remember:\n\n- **TOR** does attempt to generate a bunch of streams for you already. From this perspective, it is already load balancing (and it's much smarter at it than **HAproxy**)\n- the main goal is masking from where we get by sending requests to multiple streams. It is not so easy to locate where an attacker comes from. If you used http/https servers e.g. proxy servers, you will know what is going on but...\n- using multiple **TOR** instances can increase the probability of using a compromised circuit\n- `multitor` getting some bandwidth improvements just because it's a different way of connecting to **TOR** network\n- in `multitor` configuration mostly **HAProxy** checks the local (syn, syn/ack) socket - not all **TOR** nodes (also exist nodes). If there is a problem with the socket it tries to send traffic to others available without touching what's next - it does not ensure that the data will arrive\n- **TOR** network is a separate organism on which the `multitor` has no effect If one of the nodes is damaged and somehow the data can not leave the exit node, it is likely that a connection error will be returned or, at best, the data will be transferred through another local socket\n- **HAProxy** load balance network traffic between local **TOR** or **http-proxy** processes - not nodes inside **TOR** network\n\n\u003e **TOR** is a fine security project and an excellent component in a strategy of defence in depth but it isn’t (sadly) a cloak of invisibility. When using the **TOR**, always remember about ssl (e.g. https) wherever it is possible.\n\nLook also at **[Limitations](#limitations)**.\n\n## How To Use\n\n\u003e :heavy_exclamation_mark: For a more detailed understanding of `multitor`, its parameters, functions and how it all works, see the **[Manual](https://github.com/trimstray/multitor/wiki/Manual)**.\n\nIt's simple:\n\n```bash\n# Clone this repository\ngit clone https://github.com/trimstray/multitor\n\n# Go into the repository\ncd multitor\n\n# Install\n./setup.sh install\n\n# Run the app\nmultitor --init 2 --user debian-tor --socks-port 9000 --control-port 9900 --proxy privoxy --haproxy\n```\n\n\u003e * symlink to `bin/multitor` is placed in `/usr/local/bin`\n\u003e * man page is placed in `/usr/local/man/man8`\n\n## Parameters\n\nProvides the following options:\n\n```bash\n  Usage:\n    multitor \u003coption|long-option\u003e\n\n  Examples:\n    multitor --init 2 --user debian-tor --socks-port 9000 --control-port 9900\n    multitor --init 10 --user debian-tor --socks-port 9000 --control-port 9900 --proxy socks\n    multitor --show-id --socks-port 9000\n\n  Options:\n        --help                        show this message\n        --debug                       displays information on the screen (debug mode)\n        --verbose                     displays more information about TOR processes\n    -i, --init \u003cnum\u003e                  init new tor processes\n    -k, --kill                        kill all multitor processes\n    -s, --show-id                     show specific tor process id\n    -n, --new-id                      regenerate tor circuit\n    -u, --user \u003cstring\u003e               set the user (only with -i|--init)\n        --socks-port \u003cport_num|all\u003e   set socks port number\n        --control-port \u003cport_num\u003e     set control port number\n        --proxy \u003cproxy_type\u003e          set socks or http (polipo, privoxy, hpts) proxy server\n        --haproxy                     set HAProxy as a frontend for http proxies (only with --proxy)\n```\n\n## Requirements\n\n`multitor` uses external utilities to be installed before running:\n\n- [tor](https://www.torproject.org/)\n- [netcat](http://netcat.sourceforge.net/)\n- [haproxy](https://www.haproxy.org/)\n- [polipo](https://www.irif.fr/~jch/software/polipo/)\n- [privoxy](https://www.privoxy.org/)\n- [http-proxy-to-socks](https://github.com/oyyd/http-proxy-to-socks)\n\nThis tool working with:\n\n- **GNU/Linux** (testing on Debian and CentOS)\n- **[Bash](https://www.gnu.org/software/bash/)** (testing on 4.4.19)\n\nAlso you will need **root access**.\n\n## Docker\n\nSee this project: **[docker-multitor](https://github.com/evait-security/docker-multitor)**\n\n## Other\n\n### Important\n\nIf you use this tool in other scripts where the output is saved everywhere, not on the screen, remember that you will not be able to use the generated password. I will correct this in the next version. If you do not use regenerate function of single or all **TOR** circuits with a password, you can safely restart the `multitor` which will do it for you.\n\n### Limitations\n\n- each **TOR**, **http-proxy** and **HAProxy** processes needs a certain number of memory. If the number of **TOR** processes is too big, the oldest one will be automatically killed by the system\n- **Polipo** is no longer supported but it is still a very good and light proxy. In my opinion the best http-proxy solution is **Privoxy**\n- I think this topic will be usefull for You before using `multitor` - [How to run multiple Tor processes at once with different exit IPs?](https://stackoverflow.com/questions/14321214/how-to-run-multiple-tor-processes-at-once-with-different-exit-ips)\n\n### Contributing\n\nSee **[this](.github/CONTRIBUTING.md)**.\n\n### Project architecture\n\nSee **[this](https://github.com/trimstray/multitor/wiki/Project-architecture)**.\n\n## License\n\nGPLv3 : \u003chttp://www.gnu.org/licenses/\u003e\n\n**Free software, Yeah!**\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftrimstray%2Fmultitor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftrimstray%2Fmultitor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftrimstray%2Fmultitor/lists"}