Giter Club home page Giter Club logo

partyloud's Introduction

Partyloud

Get your privacy back
Generate fake web browsing and mitigate tracking


PartyLoud 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.
Screenshot

Please submit bugs and feature requests and help me to continuously improve this project.
For questions / feedbacks please contact me Here

  • Simple. 3 files only, no installation required, just clone this repo an you're ready to go.
  • Powerful. Thread-based navigation.
  • Stealthy. Optimized to emulate user navigation.
  • Portable. You can use this script on every unix-based OS.

This project was inspired by noisy.py

βš™οΈ How It Works

  1. URLs and keywords are loaded (either from partyloud.conf and badwords or from user-defined files)
  2. If proxy flag has been used, proxy config will be tested
  3. For each URL in ULR-list a thread is started, each thread as an user agent associated
  4. Each thread will start by sending an HTTP request to the given URL
  5. The response if filtered using the keywords in order to prevent 404s and malformed URLs
  6. A new URL is choosen from the list generated after filering
  7. Current thread sleeps for a random time
  8. Actions from 4 to 7 are repeated using the new URL until user send kill signal (CTRL-C or enter key)

πŸš€ Features

  • Configurable urls list and blocklist
  • Random DNS Mode : each request is done on a different DNS Server
  • Multi-threaded request engine (# of thread are equal to # of urls in partyloud.conf)
  • Error recovery mechanism to protect Engines from failures
  • Spoofed User Agent prevent from fingerprinting (each engine has a different user agent)
  • Dynamic UI

πŸŽ‰ Setup

Clone the repository:

git clone https://github.com/realtho/PartyLoud.git

Navigate to the directory and make the script executable:

cd PartyLoud
chmod +x partyloud.sh

Run 'partyloud':

./partyloud.sh

πŸ“‹ Usage

Usage: ./partyloud.sh [options...]

-d --dns <file>                    DNS Servers are sourced from specified FILE,
                                   each request will use a different DNS Server
                                   in the list
                                   !!WARNING THIS FEATURE IS EXPERIMENTAL!!
                                   !!PLEASE LET ME KNOW ISSUES ON GITHUB !!
-l --url-list <file>               read URL list from specified FILE
-b --blocklist <file>              read blocklist from specified FILE
-p --http-proxy <http://ip:port>   set a HTTP proxy
-s --https-proxy <https://ip:port> set a HTTPS proxy
-n --no-wait                       disable wait between one request and an other
-h --help                          dispaly this help
To stop the script press either enter or CRTL-C

 ⚠️ File Specifications

In current release there is no input-validation on files.
If you find bugs or have suggestions on how to improve this features please help me by opening issues on GitHub

Intro

If you don’t have special needs , default config files are just fine to get you started.

Default files are located in:

Please note that file name and extension are not important, just content of files matter

badwords - Keywords-based blocklist

badwords is a keywords-based blocklist used to filter non-HTML content, images, document and so on.
The 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.
Here are some hints on how to create a great blocklist file:

DO βœ… DONT 🚫
Use only ASCII chars Define one-site-only rules
Try to keep the rules as general as possible Define case-sensitive rules
Prefer relative path Place more than one rule per line

partyloud.conf - ULR List

partyloud.conf is a ULR List used as starting point for fake navigation generators.
The goal here is to create a good list of sites containing a lot of URLs.
Aside suggesting you not to use google, youtube and social networks related links, I've really no hints for you.

Note #1 - To work properly the URLs must be well-formed
Note #2 - Even if the file contains 1000 lines only 10 are used (first 10, working on randomness)
Note #3 - Only one URL per line is allowed

DNSList - DNS List

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.
The only suggestion here is to add as much address as possible to increase randomness.

Note #1 - Only one address per line is allowed

πŸ“– FAQ

Isn't this literally just a cli based frontend to curl?


The 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.

How does the error recovery mechanism work?


Error 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.

May I fork your project?


Look Here πŸ˜‰

How easy is this fake traffic to detect?


Unfortunately it's pretty easy, but keep in mind that this is a beta and I'll fix this "issue" in upcoming releases.

What does badwords do?


badwords 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.

What does partyloud.conf do?


partyloud.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 Fork Bombs.

partyloud's People

Contributors

davide-olgiati avatar davideolgiati avatar fireneat avatar garlic-hub avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

partyloud's Issues

[REQUEST] Stay on the page

Describe the solution you'd like
That it will open more tabs with proxies and stay on the provided url.

[REQUEST] Port?

do you mind if i port this to golang or ruby and give attribution?

Network check should not be ping

When running the script the default network check is a ping, But trying to get a URL should be used as it represents the capabilities of this script better

[REQUEST] Possibility to set a delay between each request send

Is your feature request related to a problem? Please describe.
It might be a problem for some.

Describe the solution you'd like
Well, it would be nice to given the possibility to set a delay (sleep) timer between each request send.
So, you can choose to set a delay or just let it do it's thing without the delay.

Describe alternatives you've considered
Sometimes you just want to send trafic slow and controlled so that you do not end up in some sort of blacklist og spamfilter.

[BUG] Code fixes

Describe the bug <-- it's not a bug.
Code fixes

  1. I saw you use a lot of tputs. As far as I know, tput behaves differently between different terminals and operating systems. There is a more universal and faster way which is using escape sequences. You can find those here.
  2. As for flag concatenation, I think it's better to use:
    while test "${#}" -gt 0; do
  3. As for the clearLines function, I think it does many useless operations. I was using your one for a script I'm creating, but then I've rewritten it and I came up with:
function clearLines() {
  local i
  for ((i=0; i<"${1}"; i++)); do
    printf "\e[2K"  # Clear entire line
    printf "\e[1A"  # Up one line
  done
}

(You may need to change the order of the two printfs or do <= in the for loop to adapt it to your code)
4. Line 126, use this condition instead:
if [[ -n "${ProxyOpt}" ]]; then
5. Speaking about the DNS file, in the checkDNS function use return instead of echo. So that the condition at line 17 will spawn one less subshell:
while checkDNS "$Dns && [[ Retry < 5 ]]; do
Also, at line 53, use this condition instead
if [[ -n "${Ip}" ]] && [[ -n "${Port}" ]]; then
6. Speaking about the tools.sh file, I suggest to change the condition at line 30. As for now it spawns a new subshell in each loop and it is a slowdown:
if command -v "$COMMAND"; then

I haven't tested the code I wrote, but I'm pretty sure it works.
Also, I suggest you to debug your code using shellcheck.
Sorry for any English mistake (I am Italian).

Send each request to a different DNS server?

Is your feature request related to a problem? Please describe.
The administrator of the DNS server in use has a complete list of the sites you visit.

Describe the solution you'd like
I'm pretty ignorant here, but I think that sending each request to a randomly chosen DNS server (from a list) would help tracking mitigation. Technically, this isn't always true because your ISP would however see the content you load after the request, but since some users don't use ISP's DNS by default, it could be a good idea to add an option '--dns' which does the job. Again - not so experienced, but hopefully it helps.

Describe alternatives you've considered
This is not related to the problem before, but I don't think that putting a google site by default in the "whitelist" is in favor of privacy.

Ask for proxy usae

Hi,

I wanted to use your tool not for hinding / mitigate tracking but testing a security proxy.

Ok, curl respects http_proxy variable but asking explicite for is IMHO quite nicer here.
So I just addes a few lines of code in a quick and dirty way. Please find my patch attached

partyloud_patch.txt

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.