{"id":15042403,"url":"https://github.com/davideolgiati/partyloud","last_synced_at":"2025-05-16T13:08:05.916Z","repository":{"id":43071021,"uuid":"177398678","full_name":"davideolgiati/PartyLoud","owner":"davideolgiati","description":"A simple tool to generate fake web browsing and mitigate tracking","archived":false,"fork":false,"pushed_at":"2024-11-26T21:01:14.000Z","size":201,"stargazers_count":283,"open_issues_count":1,"forks_count":32,"subscribers_count":10,"default_branch":"master","last_synced_at":"2025-05-16T13:08:03.508Z","etag":null,"topics":["bash","bash-script","bot","dns","http","https","privacy","privacy-tools","shell","traffic-analysis","traffic-generator","traffic-simulation"],"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/davideolgiati.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"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":"2019-03-24T10:17:13.000Z","updated_at":"2025-05-11T22:00:03.000Z","dependencies_parsed_at":"2024-09-25T01:41:13.080Z","dependency_job_id":"06f2b1d6-17e6-49a8-aa2f-ad820177e09f","html_url":"https://github.com/davideolgiati/PartyLoud","commit_stats":{"total_commits":97,"total_committers":7,"mean_commits":"13.857142857142858","dds":"0.38144329896907214","last_synced_commit":"da96a9aa5338d077626462b5343d73e6ce00a571"},"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davideolgiati%2FPartyLoud","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davideolgiati%2FPartyLoud/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davideolgiati%2FPartyLoud/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davideolgiati%2FPartyLoud/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/davideolgiati","download_url":"https://codeload.github.com/davideolgiati/PartyLoud/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254535829,"owners_count":22087399,"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":["bash","bash-script","bot","dns","http","https","privacy","privacy-tools","shell","traffic-analysis","traffic-generator","traffic-simulation"],"created_at":"2024-09-24T20:47:14.802Z","updated_at":"2025-05-16T13:08:05.900Z","avatar_url":"https://github.com/davideolgiati.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003e\nPartyloud\n\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\nGet your privacy back\u003cbr\u003e\nGenerate fake web browsing and mitigate tracking \n\u003c/p\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003cbr /\u003e\n  \u003c!-- made-with-bash --\u003e\n  \u003ca href=\"https://www.gnu.org/software/bash/\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Made%20with-Bash-1f425f.svg\"\n      alt=\"made-with-bash\" /\u003e\n  \u003c/a\u003e\n  \u003c!-- CodeFactor --\u003e\n  \u003ca href=\"https://www.codefactor.io/repository/github/realtho/partyloud\"\u003e\n    \u003cimg src=\"https://www.codefactor.io/repository/github/realtho/partyloud/badge\"\n      alt=\"CodeFactor\" /\u003e\n  \u003c/a\u003e\n  \u003c!-- GitHub code size in bytes --\u003e\n  \u003ca href=\"#\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/languages/code-size/realtho/PartyLoud.svg\"\n      alt=\"GitHub code size in bytes\" /\u003e\n  \u003c/a\u003e\n  \u003cbr /\u003e\n  \u003c!-- GitHub last commit --\u003e\n  \u003ca href=\"#\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/last-commit/realtho/PartyLoud.svg\"\n      alt=\"Last commit\" /\u003e\n  \u003c/a\u003e\n  \u003c!-- License --\u003e\n  \u003ca href=\"#\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/license/realtho/Partyloud.svg\"\n      alt=\"License\" /\u003e\n  \u003c/a\u003e\n  \u003cbr /\u003e\n  \u003c!-- License --\u003e\n  \u003ca href=\"http://makeapullrequest.com\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/PRs-welcome-brightgreen.svg\"\n      alt=\"PRs Welcome\" /\u003e\n  \u003c/a\u003e\n  \u003cbr /\u003e\n\u003c/div\u003e\n  \n\u003cp align=\"center\"\u003e\n\u003cbr /\u003e\nPartyLoud is a highly configurable and straightforward free tool that helps you prevent tracking directly from your linux terminal, no special skills required. Once started, you can forget it is running. It provides several flags; each flag lets you customize your experience and change PartyLoud behaviour according to your needs.\n\u003cbr /\u003e\n\u003cimg src=\"https://i.imgur.com/cPO0X1U.png\"\n      alt=\"Screenshot\" /\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n\u003cb\u003ePlease \u003ca href=\"https://github.com/realtho/PartyLoud/issues\"\u003esubmit bugs and feature requests\u003c/a\u003e and help me to continuously improve this project.\u003c/b\u003e\u003cbr /\u003e\nFor questions / feedbacks please contact me \u003ca href=\"https://twitter.com/realTHO2\"\u003eHere\u003c/a\u003e\u003cbr /\u003e\n\u003cbr /\u003e\n\u003c/p\u003e  \n\n- **Simple.** 3 files only, no installation required, just clone this repo an you're ready to go.\n- **Powerful.** Thread-based navigation.\n- **Stealthy.** Optimized to emulate user navigation.\n- **Portable.** You can use this script on every unix-based OS.\n\nThis project was inspired by [noisy.py](https://github.com/1tayH/noisy \"noisy.py\")\n\n### [📝 Changelog](CHANGELOG.md)\n\n## ⚙️ `How It Works`\n\n1. URLs and keywords are loaded (either from partyloud.conf and badwords or from user-defined files)\n2. If proxy flag has been used, proxy config will be tested\n3. For each URL in ULR-list a thread is started, each thread as an [user agent](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/User-Agent) associated\n4. Each thread will start by sending an [HTTP](https://www.scaler.com/topics/hypertext-transfer-protocol/) request to the given URL\n5. The response if filtered using the keywords in order to prevent 404s and malformed URLs\n6. A new URL is choosen from the list generated after filering\n7. Current thread sleeps for a random time\n8. Actions from 4 to 7 are repeated using the new URL until user send kill signal (CTRL-C or enter key) \n\n## 🚀 `Features`\n\n- Configurable urls list and blocklist\n- Random DNS Mode : each request is done on a different DNS Server\n- Multi-threaded request engine (# of thread are equal to # of urls in partyloud.conf)\n- Error recovery mechanism to protect Engines from failures\n- Spoofed User Agent prevent from fingerprinting (each engine has a different user agent)\n- Dynamic UI\n\n## 🎉 `Setup`\n\nClone the repository:\n```sh\ngit clone https://github.com/realtho/PartyLoud.git\n```\nNavigate to the directory and make the script executable:\n```sh\ncd PartyLoud\nchmod +x partyloud.sh\n```\nRun 'partyloud':\n```sh\n./partyloud.sh\n```\n\n## 📋 `Usage`\n\n```sh\nUsage: ./partyloud.sh [options...]\n\n-d --dns \u003cfile\u003e                    DNS Servers are sourced from specified FILE,\n                                   each request will use a different DNS Server\n                                   in the list\n                                   !!WARNING THIS FEATURE IS EXPERIMENTAL!!\n                                   !!PLEASE LET ME KNOW ISSUES ON GITHUB !!\n-l --url-list \u003cfile\u003e               read URL list from specified FILE\n-b --blocklist \u003cfile\u003e              read blocklist from specified FILE\n-p --http-proxy \u003chttp://ip:port\u003e   set a HTTP proxy\n-s --https-proxy \u003chttps://ip:port\u003e set a HTTPS proxy\n-n --no-wait                       disable wait between one request and an other\n-h --help                          dispaly this help\n```\n\n##### To stop the script press either enter or CRTL-C\n\n##  ⚠️ `File Specifications`\n\n\u003cp align=\"center\"\u003e\n\u003cb\u003eIn current release there is no input-validation on files.\u003c/b\u003e\u003cbr /\u003e\nIf you find bugs or have suggestions on how to improve this features please help me  by opening issues on GitHub \u003cbr /\u003e\n\u003cbr /\u003e\n\u003c/p\u003e\n\n### Intro\n\n###### If you don’t have special needs , default config files are just fine to get you started.  \n  \nDefault files are located in:\n\n* [badwords](badwords)\n* [partyloud.conf](partyloud.conf)\n* [DNSList](DNSList)\n\nPlease note that file name and extension are not important, just content of files matter  \n  \n#### [badwords](badwords) - Keywords-based blocklist\n  \n[badwords](badwords) is a keywords-based blocklist used to filter non-HTML content, images, document and so on.  \nThe default config as been created after several weeks of testing. If you really think you need a custom blocklist, my suggestion is to start by copy and modifying default config according to your needs.  \nHere are some hints on how to create a great blocklist file:\n  \n| DO ✅ | DONT 🚫 |\n| ------------- | ------------- |\n| Use only ASCII chars  | Define one-site-only rules |\n| Try to keep the rules as general as possible | Define case-sensitive rules |\n| Prefer relative path | Place more than one rule per line |\n  \n#### [partyloud.conf](partyloud.conf) - ULR List\n  \n[partyloud.conf](partyloud.conf) is a ULR List used as starting point for fake navigation generators.  \nThe goal here is to create a good list of sites containing a lot of URLs.  \nAside suggesting you not to use google, youtube and social networks related links, I've really no hints for you.  \n###### Note #1 - To work properly the URLs must be [well-formed](https://earthsci.stanford.edu/computing/hosting/urlsyntax/index.php)  \n###### Note #2 - Even if the file contains 1000 lines only 10 are used (first 10, working on randomness)  \n###### Note #3 - Only one URL per line is allowed\n  \n#### [DNSList](DNSList) - DNS List\n  \n[DNSList](DNSList) is a List of DNS used as argument for random DNS feature. Random DNS is not enable by default, so the “default file” is really just a guide line and a test used while developing the function to se if everything was working as expected.   \nThe only suggestion here is to add as much address as possible to increase randomness.  \n###### Note #1 - Only one address per line is allowed\n  \n## 📖 `FAQ`\n\n\u003cdetails\u003e\n  \u003csummary\u003eIsn't this literally just a cli based frontend to curl?\u003c/summary\u003e\n  \u003cp\u003e\u003cbr /\u003eThe core of the script is a curl request, but this tool does more than that. When you run the script, several threads are started. Each thread makes a different http request and parses the output to choose the next url, simulating web navigation. Unless the user stops the script (either pressing enter or via CTRL-C), it will stay alive.\u003c/p\u003e\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003eHow does the error recovery mechanism work? \u003c/summary\u003e\n  \u003cp\u003e\u003cbr /\u003eError recovery mechanism is an elegant way to say that if the http request returns a status code starting with 4 or 5 (error), the script will use a backup-url on order to continue normal execution.\u003c/p\u003e\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003eMay I fork your project?\u003c/summary\u003e\n  \u003cp\u003e\u003cbr /\u003eLook \u003ca href=\"https://tldrlegal.com/license/gnu-general-public-license-v3-(gpl-3)\"\u003eHere\u003c/a\u003e 😉\u003c/p\u003e\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003eHow easy is this fake traffic to detect?\u003c/summary\u003e\n  \u003cp\u003e\u003cbr /\u003eUnfortunately it's pretty easy, but keep in mind that this is a beta and I'll fix this \"issue\" in upcoming releases.\u003c/p\u003e\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003eWhat does badwords do?\u003c/summary\u003e\n  \u003cp\u003e\u003cbr /\u003ebadwords is just a list of keywords used to filter urls in order to prevent 404s and traversing non-html content (like images, css, js). You can create your own, but, unless you have special needs, I recommend you use the default one or at least use it as a template.\u003c/p\u003e\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003eWhat does partyloud.conf do?\u003c/summary\u003e\n  \u003cp\u003e\u003cbr /\u003epartyloud.conf is just a list of root urls used to start the fake navigation. You can create your own conf file, but pay attention that the more urls you add, the more threads you start. This is an \"open issue\". Upcoming releases will come with a max thread number in order to avoid \u003ca href=\"https://www.geeksforgeeks.org/fork-bomb/\"\u003eFork Bombs\u003c/a\u003e.\u003c/p\u003e\n\u003c/details\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdavideolgiati%2Fpartyloud","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdavideolgiati%2Fpartyloud","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdavideolgiati%2Fpartyloud/lists"}