An open API service indexing awesome lists of open source software.

https://github.com/calpa/urusai

Go implementation of noisy HTTP/DNS traffic generator
https://github.com/calpa/urusai

Last synced: about 2 months ago
JSON representation

Go implementation of noisy HTTP/DNS traffic generator

Awesome Lists containing this project

README

          

# ๐Ÿ”Š Urusai

### ใ†ใ‚‹ใ•ใ„ - Your Privacy Shield in the Digital Noise

[![Go Report Card](https://goreportcard.com/badge/github.com/calpa/urusai)](https://goreportcard.com/report/github.com/calpa/urusai)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![GitHub stars](https://img.shields.io/github/stars/calpa/urusai.svg)](https://github.com/calpa/urusai/stargazers)
[![GitHub last commit](https://img.shields.io/github/last-commit/calpa/urusai.svg)](https://github.com/calpa/urusai/commits/main)

*A Go implementation of [noisy](https://github.com/1tayH/noisy) - Making your web traffic less valuable, one request at a time* ๐Ÿ›ก๏ธ

## ๐ŸŒŸ What is Urusai?

Urusai (Japanese for 'noisy') is your digital privacy companion that generates random HTTP/DNS traffic noise in the background while you browse the web. By creating this digital smokescreen, it helps make your actual web traffic data less valuable for tracking and selling.

## โœจ Features

- ๐ŸŒ Generates random HTTP/DNS traffic by crawling websites
- โš™๏ธ Configurable via JSON configuration file
- ๐ŸŽญ Customizable user agents, root URLs, and blacklisted URLs
- โฑ๏ธ Adjustable crawling depth and sleep intervals
- โฐ Optional timeout setting

## ๐Ÿ“ฅ Installation

### Arch Linux (AUR)

```bash
yay -S urusai
```

### Void Linux

```bash
sudo xbps-install -S urusai
```

### ๐Ÿ“ฆ Using Pre-built Binaries

The easiest way to get started is to download a pre-built binary from the [releases page](https://github.com/calpa/urusai/releases) ๐Ÿš€

1. Download the appropriate binary for your platform:
- ๐ŸŽ `urusai-macos-amd64` - for macOS Intel systems
- ๐Ÿ `urusai-macos-arm64` - for macOS Apple Silicon systems
- ๐Ÿง `urusai-linux-amd64` - for Linux x86_64 systems
- ๐ŸชŸ `urusai-windows-amd64.exe` - for Windows x86_64 systems

2. Make the binary executable (Unix-based systems only):
```bash
chmod +x urusai-*
```

3. ๐Ÿš€ Run the binary:
```bash
# ๐ŸŽ On macOS (Intel)
./urusai-macos-amd64

# ๐Ÿ On macOS (Apple Silicon)
./urusai-macos-arm64

# ๐Ÿง On Linux
./urusai-linux-amd64

# ๐ŸชŸ On Windows (using Command Prompt)
urusai-windows-amd64.exe
```

### ๐Ÿ› ๏ธ Building from Source

```bash
# ๐Ÿ’ป Clone the repository
git clone https://github.com/calpa/urusai.git

# ๐Ÿ“ Navigate to the project directory
cd urusai

# ๐Ÿ’ฟ Build the project
go build -o urusai
```

### ๐Ÿณ Using Docker

#### ๐ŸŒŒ Pull from Docker Hub

```bash
# ๐Ÿ“ฅ Pull the latest image
docker pull calpa/urusai:latest

# ๐Ÿš€ Run the container with default configuration
docker run calpa/urusai

# โš™๏ธ Run with custom configuration (mount your config file)
docker run -v $(pwd)/config.json:/app/config.json calpa/urusai --config config.json
```

The Docker image is available for multiple platforms:
- ๐Ÿ’ป linux/amd64 (x86_64)
- ๐Ÿ linux/arm64 (Apple Silicon)
- ๐Ÿ“ฑ linux/arm/v7 (32-bit ARM)

#### ๐Ÿ’ป Build Locally

```bash
# ๐Ÿ—๏ธ Build the Docker image
docker build -t urusai .

# ๐Ÿš€ Run your locally built container
docker run urusai
```

## Usage

```bash
# Run with built-in default configuration
./urusai

# Run with custom configuration file
./urusai --config config.json

# Show help
./urusai --help
```

### Command Line Arguments

- `--config`: Path to the configuration file (optional, uses built-in default configuration if not specified)
- `--log`: Logging level (default: "info")
- `--timeout`: For how long the crawler should be running, in seconds (optional, 0 means no timeout)

## โš™๏ธ Configuration

Urusai comes with a built-in default configuration, but you can also provide your own custom configuration file. The configuration is in JSON format with the following structure:

```jsonc
{
"max_depth": 25, // ๐Ÿ•ณ๏ธ Maximum crawling depth
"min_sleep": 3, // ๐Ÿ’ค Minimum sleep between requests (seconds)
"max_sleep": 6, // โณ Maximum sleep between requests (seconds)
"timeout": 0, // โฐ Crawler timeout (0 = no timeout)
"root_urls": [ // ๐ŸŒ Starting points for crawling
"https://www.wikipedia.org",
"https://www.github.com"
],
"blacklisted_urls": [ // โ›” URLs to skip
".css",
".ico",
".xml"
],
"user_agents": [ // ๐Ÿ‘จโ€๐Ÿ’ป Browser identities
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"
]
}
```

## ๐Ÿ‘จโ€๐Ÿ’ป For Developers

### ๐Ÿ› ๏ธ Development

Urusai is developed using standard Go practices. Here are some commands that will help you during development:

```bash
# ๐Ÿ’ป Run the project directly without building
go run main.go

# ๐Ÿ“ Run with a specific log level
go run main.go --log debug

# โš™๏ธ Run with a custom configuration file
go run main.go --config config.json

# โฐ Run with a timeout (in seconds)
go run main.go --timeout 300
```

### ๐Ÿงช Testing

Urusai includes comprehensive test coverage for all packages. The tests verify configuration loading, command-line flag parsing, and crawler functionality.

```bash
# ๐ŸŽฃ Run all tests
go test ./...

# ๐Ÿ“˜ Run tests with verbose output
go test -v ./...

# ๐Ÿ“ˆ Run tests with coverage
go test -cover ./...

# ๐Ÿ“‹ Generate a coverage report
go test -coverprofile=coverage.out ./...
go tool cover -html=coverage.out
```

Test files include:
- ๐Ÿ““ `main_test.go`: Tests for command-line parsing, configuration loading, and signal handling
- ๐Ÿ“’ `config/config_test.go`: Tests for configuration loading and validation

### ๐Ÿ—๏ธ Building

```bash
# ๐Ÿ› ๏ธ Build for the current platform
go build -o urusai

# ๐Ÿ’ป Build for a specific platform (e.g., Linux)
GOOS=linux GOARCH=amd64 go build -o urusai-linux-amd64

# ๐ŸŒ Build for multiple platforms
GOOS=darwin GOARCH=amd64 go build -o urusai-macos-amd64
GOOS=windows GOARCH=amd64 go build -o urusai-windows-amd64.exe
```

## โญ Star History

[![Star History Chart](https://api.star-history.com/svg?repos=calpa/urusai&type=Timeline)](https://www.star-history.com/#calpa/urusai&Timeline)

### ๐Ÿš€ Releases

Urusai uses GitHub Actions for automated releases. When a new tag with format `v*` (e.g., `v1.0.0`) is pushed to the repository, GitHub Actions will automatically:

1. ๐Ÿงช Run tests to ensure code quality
2. ๐Ÿ”จ Build binaries for all supported platforms (macOS Intel/ARM, Linux, Windows)
3. ๐Ÿ“ฆ Create compressed archives of the binaries
4. ๐ŸŽ‰ Create a new GitHub release with the binaries attached

To create a new release:

```bash
# ๐Ÿท๏ธ Tag the commit
git tag v1.0.0

# ๐Ÿš€ Push the tag to GitHub
git push origin v1.0.0
```

The GitHub Actions workflow will handle the rest automatically.

### ๐Ÿ’Ž Code Quality

```bash
# ๐ŸŽจ Format code
go fmt ./...

# ๐Ÿ” Vet code for potential issues
go vet ./...

# โœจ Run linter (requires golint)
go install golang.org/x/lint/golint@latest
golint ./...

# ๐Ÿ”ฌ Run static analysis (requires staticcheck)
go install honnef.co/go/tools/cmd/staticcheck@latest
staticcheck ./...
```

## ๐Ÿ“œ License

This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details. โš–๏ธ